如何根据r中ifelse语句的结果生成新向量?
我试图根据现有变量的值生成两个新变量。这是一个非常简单的操作,但我似乎无法让它在r中的所有向量值上正确运行。我试图从SPSS转换成r,但这个特殊的目标似乎并没有很好地转换成r 对于条件的每个值,我想为一个名为“expect”的新变量生成一个值如何根据r中ifelse语句的结果生成新向量?,r,R,我试图根据现有变量的值生成两个新变量。这是一个非常简单的操作,但我似乎无法让它在r中的所有向量值上正确运行。我试图从SPSS转换成r,但这个特殊的目标似乎并没有很好地转换成r 对于条件的每个值,我想为一个名为“expect”的新变量生成一个值 if Condition = 1, expect = 0 if Condition = 2, expect = 1 if Condition = 3, expect = 0 if Condition = 4, expect = 1 我如何将其转换为r代码
if Condition = 1, expect = 0
if Condition = 2, expect = 1
if Condition = 3, expect = 0
if Condition = 4, expect = 1
我如何将其转换为r代码?如何在整个向量上运行这些链接的ifelse语句?我意识到这是一个非常初级的问题,但我已经寻找了相当长的时间,并没有找到解决办法。我收集到的最好的信息是:
expect<-ifelse(Condition == 1, 0, 1, ifelse(Condition == 2, 1, 0, ifelse(Condition == 3, 0, 1, ifelse(Condition == 4, 1, 0))))
expect在新旧值之间创建映射,map=c(0,1,0,1)
然后子集expect=map[Condition]
。为基于字符的映射使用名称,map=c(foo=1,bar=2);不命名(映射[c(“foo”、“foo”、“bar”))
您可以随时玩“code golf”并使其更紧凑,但下面是一个简单的说明:
Condition <- c(1,2,3,4,0,3,4,5)
expect <- c(NA, NA, NA, NA, NA, NA, NA, NA)
for(i in 1:length(Condition)){
if (Condition[i] == 1){expect[i] <- 0}
if (Condition[i] == 2){expect[i] <- 1}
if (Condition[i] == 3){expect[i] <- 0}
if (Condition[i] == 4){expect[i] <- 1}
}
expect
[1] 0 1 0 1 NA 0 1 NA
Condition为什么不一次执行两个:ifelse(Condition==1 | Condition==3,0,1)
假设只有4个可能的值。函数采用以下三个值:ifelse
Condition,yes,no
。但是,您的代码具有以下条件:条件,是,否,如果其他…
。用下一个ifelse
替换no
,它就会工作。