我有这个数据集
ID | days
1 | 2
1 | 31
1 | 22
2 | 24
2 | 19
我想要创建一个新列,其中包含相同ID的计数,但只计算天数> 20,
ID | days | Count
1 | 2 | 2
1 | 31 | 2
1 | 22 | 2
2 | 24 | 1
2 | 19 | 1
我试过这个:
dataset1 = dataset1[ days > 20,count_IDs :=.N, by = 'ID' ]
但是只为那些天和>的行分配一个值20,我想在同一个ID的所有行中添加该值。 如果可以使用data.frame解决这个问题,那就太棒了
答案 0 :(得分:2)
多种方法:
使用基数R ave
,我们计算每个days
的{{1}}个数大于20。
ID
使用df$Count <- ave(df$days, df$ID, FUN = function(x) sum(x>20))
df
# ID days Count
#1 1 2 2
#2 1 31 2
#3 1 22 2
#4 2 24 1
#5 2 19 1
dplyr