相关疑难解决方法(0)

案例陈述相当于R

我在数据框中有一个变量,其中一个字段通常有7-8个值.我想在数据框中的一个新变量中将它们拼写为3或4个新类别.什么是最好的方法?

如果我在类似SQL的工具中但是不确定如何在R中攻击它,我将使用CASE语句.

您将提供的任何帮助将不胜感激!

r case

72
推荐指数
10
解决办法
13万
查看次数

字典样式替换多个项目

我有一个大型的data.frame字符数据,我想根据其他语言中通常称为字典的内容进行转换.

目前我正在这样做:

foo <- data.frame(snp1 = c("AA", "AG", "AA", "AA"), snp2 = c("AA", "AT", "AG", "AA"), snp3 = c(NA, "GG", "GG", "GC"), stringsAsFactors=FALSE)
foo <- replace(foo, foo == "AA", "0101")
foo <- replace(foo, foo == "AC", "0102")
foo <- replace(foo, foo == "AG", "0103")
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,但是replace每次我想要替换data.frame中的一个项目时,重复该语句显然不是很漂亮并且看起来很愚蠢.

有没有更好的方法来实现这一点,因为我有一个大约25个键/值对的字典?

r bioinformatics dataframe

28
推荐指数
8
解决办法
2万
查看次数

根据另一列中的4个值创建新列

我想基于另一列中的4个值创建一个新列.

if col1=1 then col2= G;
if col1=2 then col2=H;
if col1=3 then col2=J;
if col1=4 then col2=K.
Run Code Online (Sandbox Code Playgroud)

我怎么做R?我需要有人帮忙解决这个问题.我试过if/else和ifelse,但似乎没有工作.谢谢

if-statement r

25
推荐指数
3
解决办法
5万
查看次数

重新编码/重新定位具有不同级别的数据框架因子

每当我必须重新编码一组变量时,我都会考虑SPSS重新编码功能.我必须承认这很简单.包中有一个类似的recode功能car,它可以解决这个问题,但我们假设我希望完成任务factor.

我有data.frame几个变量值,范围从1到7.我想"反转"变量值,因此用7s替换1s,用6s替换2s,用5s替换3s等.我可以使用factor函数:

# create dummy factor
set.seed(100)
x <- as.factor(round(runif(100,1,7)))
y <- factor(x, levels = rev(levels(x)))
Run Code Online (Sandbox Code Playgroud)

如果我跑:

> levels(x)
[1] "1" "2" "3" "4" "5" "6" "7"
> levels(y)
[1] "7" "6" "5" "4" "3" "2" "1"
Run Code Online (Sandbox Code Playgroud)

当我想重新编码没有相同级别的因子时,问题就开始了.如果某个因子z有水平c("1", "3", "4", "6", "7"),是否有可能通过利用factor函数来"反转"水平,所以1 = 7,2 = 6,3 = 5等?

其他有效的重新编码功能就足够了!

r levels

10
推荐指数
1
解决办法
1万
查看次数

为什么R中的重新编码不会改变原始值?

我正试图recode在R(从car包中)使用它并没有工作.我将.csv文件中的数据读入一个名为的数据框results.然后,我Built_year根据以下逻辑替换列中的值.

recode(results$Built_year, 
       "2 ='1950s';3='1960s';4='1970s';5='1980s';6='1990s';7='2000 or later'")
Run Code Online (Sandbox Code Playgroud)

当我results$Built_year在执行此步骤后检查时,它似乎已经起作用.但是,它不存储此值,并返回其先前的值.我不明白为什么.

谢谢.

(目前出现问题,我看不到任何格式化的图标)

statistics r

5
推荐指数
1
解决办法
1万
查看次数

如何将变量重新编码为数字?

> library(car)

> df = data.frame(value=c('A', 'B', 'C', 'A'))
> foo = recode(df$value, "'A'=1; 'B'=2; 'C'=3;", as.numeric.result=TRUE)
> mean(foo)
[1] NA
Warning message:
In mean.default(foo) : argument is not numeric or logical: returning NA
> foo
[1] 1 2 3 1
Levels: 1 2 3
Run Code Online (Sandbox Code Playgroud)

啊.我认为as.numeric.result(默认为TRUE)的定义是,如果结果都是数字,它们将被强制转换为数字.

如何将此重新编码的结果设为数字?

r r-car

4
推荐指数
1
解决办法
4万
查看次数

标签 统计

r ×6

bioinformatics ×1

case ×1

dataframe ×1

if-statement ×1

levels ×1

r-car ×1

statistics ×1