这个问题在这里已经有了答案:
Add a new column of the sum by group [duplicate]
(1 个回答)
5年前关闭。
假设我有这样的数据框
DF
Id X Y Z
1 1 5 0
1 2 0 0
1 3 0 5
1 4 9 0
1 5 2 3
1 6 5 0
2 1 5 0
2 2 4 0
2 3 0 6
2 4 9 6
2 5 2 0
2 6 5 2
3 1 5 6
3 2 4 0
3 3 6 5
3 4 9 0
3 5 2 0
3 6 5 0
我想计算变量
Z
的非零条目数在特定 Id
并在新列中记录该值 Count
,所以新的数据框看起来像DF1
Id X Y Z Count
1 1 5 0 2
1 2 4 0 2
1 3 6 5 2
1 4 9 0 2
1 5 2 3 2
1 6 5 0 2
2 1 5 0 3
2 2 4 0 3
2 3 6 6 3
2 4 9 6 3
2 5 2 0 3
2 6 5 2 3
3 1 5 6 2
3 2 4 0 2
3 3 6 5 2
3 4 9 0 2
3 5 2 0 2
3 6 5 0 2
最佳答案
我们可以使用基数 R ave
计算列 Z
的非零值的数量按 Id
分组
df$Count <- ave(df$Z, df$Id, FUN = function(x) sum(x!=0))
df$Count
#[1] 2 2 2 2 2 2 3 3 3 3 3 3 2 2 2 2 2 2
关于r - 计算 R 中列的非零值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40385920/