我正在尝试使用 dplyr 中的 mutate 创建条件变量,但这似乎对我不起作用。请参阅我尝试创建的示例数据框和组合得分变量。请注意,新变量“combined.score”的第三个观测值不是 B、C 和 D 的总和。看来仅计算第一个观测值,并且该值用于每个行观测值。
我在这里缺少什么?想要一个发生这种情况的原因(没有太多替代代码或解决方案)
df <-
data.frame(B=c(1,0,0),
C=c(3,4,9),
D=c(1,1,0))
#A function to calculate stations whether there is a communication or process component or both
df <- df %>%
mutate(combined.score = ifelse("B" %in% names(.) & "C" %in% names(.) & "D" %in% names(.), B + C + D,
ifelse("B" %in% names(.) & "C" %in% names(.), B + C,
B))) %>%
mutate(combined.score.correct = B + C + D)
的文档ifelse
says:
ifelse 返回一个值与测试形状相同
Here test
is "B" %in% names(df) & "C" %in% names(df) & "D" %in% names(df)
,返回一个 1 元素向量
[1] TRUE
因此,ifelse
调用返回一个单元素向量,其中仅第一个元素B + C + D
,然后在整个向量中循环使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)