我有这个示例数据集:
df <- data.frame(ID = c(1, 1, 1, 2, 2, 2), A = c("2018-10-12",
"2018-10-12", "2018-10-13", "2018-10-14", "2018-10-15", "2018-10-16"),
B = c(1, 5, 7, 2, 54, 202))
ID A B
1 1 2018-10-12 1
2 1 2018-10-12 5
3 1 2018-10-13 7
4 2 2018-10-14 2
5 2 2018-10-15 54
6 2 2018-10-16 202我要做的是创建一个列C,它是B的总和,但只针对每一行之前的日期。例如,我正在寻找的输出是:
ID A B C
1 1 2018-10-12 1 1
2 1 2018-10-12 5 6
3 1 2018-10-13 7 13
4 2 2018-10-14 2 2
5 2 2018-10-15 54 56
6 2 2018-10-16 202 258当我有这些问题时,我通常会使用子集来做单个求和,但我不确定如何在新的专栏中做到这一点。
我的最终目标是确定每个ID (如果适用)超过50的日期。
谢谢!
发布于 2018-11-17 03:15:41
我们可以按累积和进行分组,以创建'C‘列
library(dplyr)
df %>%
group_by(ID) %>%
mutate(C = cumsum(B))或者使用data.table
library(data.table)
setDT(df)[, C := cumsum(B), by = ID]或使用base R
df$C <- with(df, ave(B, ID, FUN = cumsum))https://stackoverflow.com/questions/53344059
复制相似问题