[英]If else statements to
我在从现有列创建新列时遇到麻烦。
我想要实现的是:
1)对于其中治疗等于“ 混合 ”的行,我要定位的NA,然后;
2a)如果NA在pun1或pun2之下;
eva3和eva4的整数必须分别转换/复制为eva_out1和eva_out2 ,
2b)反之亦然,如果NA在pun3或pun4下 ,则;
eva1等于eva_out1 ,其中eva2还将其整数转换为eva_out2
由于二进位组的组成,我们永远不会有eva_out3
。
一开始我尝试了这个:
df5$eva_out1 <- with(df5, ifelse(
(is.na(pun1) | is.na(pun2)) & treatment == "mixed",
df5$eva_out1 <- eva3,NA ))
这样就完成了大部分工作,但是我不能多次运行,因为其他值将被eva_out2的另一段代码覆盖。
然后我尝试了这个:
df5$eva_out1 <- with(df5, ifelse(
(is.na(pun1) | is.na(pun2)) & treatment == "mixed",
df5$eva_out1 == eva2 & df5$eva_out2 == eva3, ifelse(
(is.na(pun3) | is.na(pun4)) & treatment == "mixed",
df5$eva_out1 == eva1 & df5$eva_out2 == eva2, NA )))
和这个
if(df5$treatment == "mixed") {
} if ( is.na(pun1) | is.na(pun2) ) {
eva_out1 <- eva3 & eva_out2 <- eva4
} else if ( is.na(pun3) | is.na(pun4) ) {
eva_out1 <- eva1 & eva_out2 <- eva2
} else {
eva_out1 <- NULL & eva_out2 <- NULL
}
但是,要么喷出错误,要么没有给出我需要的结果。 我一直在看函数,但是ifelse()在这种情况下似乎更合法。 如果我错了,请纠正我。
数据的前12行:
. UniqueSS subject group part round treatment pun1 pun2 pun3 pun4 eva1 eva2 eva3
1 11 1 1 punishment 0 homogenous NA 0 0 0 0 0 0
2 12 2 1 punishment 0 homogenous 0 NA 0 0 0 0 0
3 13 3 1 punishment 0 homogenous 0 0 NA 0 0 0 1
4 14 4 1 punishment 0 homogenous 0 0 1 NA 0 0 0
5 11 1 1 punishment 1 homogenous NA 0 0 0 0 0 0
6 12 2 1 punishment 1 homogenous 0 NA 0 0 0 0 0
7 13 3 1 punishment 1 homogenous 0 0 NA 0 0 0 0
8 14 4 1 punishment 1 homogenous 0 0 0 NA 0 0 0
9 11 1 1 punishment 2 homogenous NA 0 0 0 0 0 0
10 12 2 1 punishment 2 homogenous 0 NA 0 0 0 0 0
11 13 3 1 punishment 2 homogenous 0 0 NA 0 0 0 0
12 14 4 1 punishment 2 homogenous 0 0 0 NA 0 0 0
对于第三行我们将有列eva_out1 == 0
, eva_out2 == 0
,因为构件pun4是同一类别组作为PUN3中,并且因此可以不被转换为另一列。
提前致谢!
不确定我是否完全理解,但是这是您的追求吗?
df5$eva_out_1 <- df5$eva_out_2 <- NA
cond1 <- df5$treatment == "mixed" & (is.na(df5$pun1) | is.na(df5$pun2))
df5$eva_out_1[cond1] <- df5$eva3[cond1]
df5$eva_out_2[cond1] <- df5$eva4[cond1]
cond2 <- df5$treatment == "mixed" & (is.na(df5$pun3) | is.na(df5$pun4))
df5$eva_out_1[cond2] <- df5$eva1[cond2]
df5$eva_out_2[cond2] <- df5$eva2[cond2]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.