如何使用dplyr将累积列添加到R数据框?
问题描述:
我作为this post同样的问题,但我想用dplyr
:如何使用dplyr将累积列添加到R数据框?
被R数据框,如:
df <- data.frame(id = rep(1:3, each = 5)
, hour = rep(1:5, 3)
, value = sample(1:15))
如何添加该ID相匹配的累积和列?
没有dplyr
以前的帖子中接受的解决方案是:
df$csum <- ave(df$value, df$id, FUN=cumsum)
答
喜欢这个?
df <- data.frame(id = rep(1:3, each = 5)
, hour = rep(1:5, 3)
, value = sample(1:15))
mutate(group_by(df,id), cumsum=cumsum(value))
或者,如果您使用dplyr
的管道运营商:
df %>% group_by(id) %>% mutate(cumsum = cumsum(value))
结果在这两种情况下:
Source: local data frame [15 x 4]
Groups: id
id hour value cumsum
1 1 1 4 4
2 1 2 14 18
3 1 3 8 26
4 1 4 2 28
5 1 5 3 31
6 2 1 10 10
7 2 2 7 17
8 2 3 5 22
9 2 4 12 34
10 2 5 9 43
11 3 1 6 6
12 3 2 15 21
13 3 3 1 22
14 3 4 13 35
15 3 5 11 46
感谢。我想要得到与其他方法相同的输出,我需要用'ungroup'完成? –
@RacingTadpole号码如果您希望整个桌子上的'cumsum'只是首先不要放在'group_by'中。 –