This question already has an answer here:
Add a new column of the sum by group [duplicate]

(1 个回答)


4年前关闭。




假设我有这样的数据框

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/

10-12 19:57