如果 else 语句

If else statements to

我在从现有列创建新列时遇到了一些问题。

我要实现的是:

1) 对于 treatment 等于“mixed” 的行,我想找到 NA,然后;

2a) 如果 NA 在 pun1pun2 下,则;

eva3eva4的整数必须是converted/copied到eva_out1eva_out2,分别是

2b) 反之亦然,如果 NA 在 pun3pun4 之下,则;

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 == 0eva_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]