申请时sum()
条件为summarize()
函数,它没有提供正确的答案。
制作数据框x:
x = data.frame(flag = 1, uin = 1, val = 2)
x = rbind(x, data.frame(flag = 2, uin = 2, val = 3))
这就是 x 的样子:
flag uin val
1 1 1 2
2 2 2 3
我想总结一下val
和val
with flag == 2
,所以我写
x %>% summarize(val = sum(val), val.2 = sum(val[flag == 2]))
结果是:
val val.2
1 5 NA
但我期望的是val.2
是 3 而不是NA
。有关更多信息,如果我先计算条件求和,然后计算总和,则会得出正确的答案:
x %>% summarize(val.2 = sum(val[flag == 2]), val = sum(val))
val.2 val
1 3 5
此外,如果我只计算条件求和,它也可以正常工作:
x %>% summarize(val.2 = sum(val[flag == 2]))
val.2
1 3
重复的名称会给您带来问题。在这段代码中
x %>% summarize(val = sum(val), val.2 = sum(val[flag == 2]))
你有两个val
对象。一个创建自val = sum(val)
以及数据框中的其他内容x
。在你的代码中,你改变val
从数据帧值到val=sum(val) = 5
。然后你就做
`val[flag == 2]`
给出一个向量c(2, NA)
, since val = 5
。因此,当您添加2 + NA
你得到NA
。解决办法,不要使用val
twice,
x %>% summarize(val_sum = sum(val), val.2 = sum(val[flag == 2]))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)