计算按条件分组的记录

时间:2018-05-30 01:25:59

标签: r

我有这个数据集

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解决这个问题,那就太棒了

1 个答案:

答案 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