我有这个数据集
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' ]
但是这只会将一个值赋给那些days > 20的行,我想在具有相同ID的所有行中添加该值。
发布于 2018-05-30 09:48:29
有多种方法可以做到这一点:
使用基数R ave
,我们为每个days
计算大于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
library(dplyr)
df %>%
group_by(ID) %>%
mutate(Count = sum(days > 20))
https://stackoverflow.com/questions/50595126
复制相似问题