首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对同一ID匹配的前几个实例求和

对同一ID匹配的前几个实例求和
EN

Stack Overflow用户
提问于 2018-11-17 03:14:45
回答 1查看 26关注 0票数 0

我有这个示例数据集:

代码语言:javascript
运行
复制
    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的总和,但只针对每一行之前的日期。例如,我正在寻找的输出是:

代码语言:javascript
运行
复制
  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的日期。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-11-17 03:15:41

我们可以按累积和进行分组,以创建'C‘列

代码语言:javascript
运行
复制
library(dplyr)
df %>% 
  group_by(ID) %>% 
  mutate(C = cumsum(B))

或者使用data.table

代码语言:javascript
运行
复制
library(data.table)
setDT(df)[, C := cumsum(B), by = ID]

或使用base R

代码语言:javascript
运行
复制
df$C <- with(df, ave(B, ID, FUN = cumsum))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53344059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档