【发布时间】:2018-10-22 19:01:37
【问题描述】:
我有一个包含 6 列的大型数据框,我想根据条件进行比较并创建一个新数据框。我正在努力使用 mutate 和 ifelse,因为我在某些地方也有 NA。我的数据的一个小样本如下所示:
dput(test)
structure(list(value = c(1, 0, 0, 0), value_lag_1 = c(0, 1, 0,
0), value_lag_2 = c(NA, 0L, 0L, 0L), value_lead_1 = c(0L, 0L,
0L, NA), value_lead_2 = c(0L, 0L, 0L, 0L), ref = c(1, 1, 0, 1
)), .Names = c("value", "value_lag_1", "value_lag_2", "value_lead_1",
"value_lead_2", "ref"), row.names = 2:5, class = "data.frame")
我想要做的是将前 5 列与最后一列(参考)进行比较。 如果前 5 列中的任何一列为 1 且 ref 为 1,则为 1,否则为 0,所以我的结果(sim)将是:
value value_lag_1 value_lag_2 value_lead_1 value_lead_2 ref sim
1 0 NA 0 0 1 1
0 1 0 0 0 1 1
0 0 0 0 0 0 0
0 0 0 NA 0 1 0
我尝试了以下方法,但没有成功:
myvar <- names(test)[1:5]
test%>%
mutate(sim=ifelse( any(myvar!=0,na.rm=T) & ref==1,1,0))
有应用条件的想法吗?非常欢迎任何其他建议。
非常感谢
【问题讨论】:
标签: r