【发布时间】:2018-03-03 03:06:29
【问题描述】:
我有一个包含两个变量 var1 和 var2 的数据集。有些情况在 var1 中有值,有些在 var2 中。 var1 中有值的情况在 var2 中为 NA,反之亦然。我想将这些变量合并为一个值为 1 或 0。如果 var1 OR var2 的值为 1,则新变量的值应为 1,如果 var1 或 var2 的值为 0,则为 0,并且仅当 var1 和 var2 均为 NA 时才为 NA。
基本上,我要做的是让 R 忽略 var1 或 var2 中的 NA(如果另一个值存在),并且仅返回 NA 是 NA 存在于两个变量中。
我尝试了以下解决方案:
第一次尝试:
df$new_var<-ifelse(df$var1==1|df$var2==1,1,
ifelse(df$var1<1|df$var2<1,0,
ifelse(is.na(df$var1)&df$var2<1,0,0
ifelse(is.na(df$var2)&df$var1<1,0,0))))
第二次尝试:
df$new_var<-ifelse(df$var1==1|df$var2==1,1,
ifelse(df$var1==0|df$var2==0,0,NA))
第三次尝试:
df$new_var<-ifelse(df$var1==1|df$var2==1,1,
ifelse(df$var1==0|df$var2==0,0,NA))
All 返回一个有 1 和 NA 且没有 0 的变量。
我做错了什么?
【问题讨论】:
-
如果值为 1 和 0 怎么办?
-
@Moody_Mudskipper - OP 指定只有一个变量可以具有除 NA 以外的值 - “var1 中具有值的情况在 var2 中是 NA,反之亦然” - 所以它实际上是一个更简单的问题比看起来:)
-
为了将来参考,数据样本和预期输出将非常有助于说明您的目标。
-
是的,我看到了,以后会记住这一点。
标签: r if-statement