首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >R-按条件累加和

R-按条件累加和
EN

Stack Overflow用户
提问于 2013-09-20 20:48:05
回答 3查看 23.4K关注 0票数 16

所以我有一个简化的数据集,看起来像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Year    ID     Sum
2009    999    100
2009    123     85
2009    666    100
2009    999    100
2009    123     90
2009    666     85
2010    999    100
2010    123    100
2010    666     95
2010    999     75
2010    123    100
2010    666     85

我想添加一个列,其中包含按年份和ID计算的累计和。如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Year     ID     Sum    Cum.Sum
2009    999     100        100
2009    123      85         85  
2009    666     100        100  
2009    999     100        200
2009    123      90        175
2009    666      85        185
2010    999     100        100
2010    123     100        100
2010    666      95         95
2010    999      75        175
2010    123     100        200
2010    666      85        180

我认为这应该是非常直截了当的,但不知何故,我还没能弄清楚。我该怎么做呢?谢谢你的帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-20 20:53:50

使用data.table

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
require(data.table)
DT <- data.table(DF)
DT[, Cum.Sum := cumsum(Sum), by=list(Year, ID)]

    Year  ID Sum Cum.Sum
 1: 2009 999 100     100
 2: 2009 123  85      85
 3: 2009 666 100     100
 4: 2009 999 100     200
 5: 2009 123  90     175
 6: 2009 666  85     185
 7: 2010 999 100     100
 8: 2010 123 100     100
 9: 2010 666  95      95
10: 2010 999  75     175
11: 2010 123 100     200
12: 2010 666  85     180
票数 36
EN

Stack Overflow用户

发布于 2013-09-20 21:00:05

另一种方式

1)使用ddply将变量按group求和(类似SQL group by)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
X <- ddply ( dataset, .(Year,ID), sum)

2)将结果与数据集合并

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Y <- merge( dataset, X, by=('Year','ID')
票数 1
EN

Stack Overflow用户

发布于 2020-11-14 01:35:52

您可以使用dplyr和基本函数cumsum

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
require(dplyr)    

dataset %>% 
  group_by(Year, ID) %>%
  mutate(cumsum = cumsum(Sum)) %>%
  ungroup()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18925600

复制
相关文章
TensorFlow2.X学习笔记(4)--TensorFlow低阶API之AutoGraph相关研究
而Autograph机制可以将动态图转换成静态计算图,兼收执行效率和编码效率之利。
MiChong
2020/09/24
1K0
TensorFlow2.X学习笔记(4)--TensorFlow低阶API之AutoGraph相关研究
【Python】面向对象 ② ( 类的定义和使用 | 类的成员方法 | 类成员方法定义语法 | self 关键字 )
类的成员方法 , 就是 在 类 中定义的 函数 , 在该 函数 中 , 可以调用 类的成员变量 , 以及 本类中其它的成员方法 ;
韩曙亮
2023/10/11
4680
【Python】面向对象 ② ( 类的定义和使用 | 类的成员方法 | 类成员方法定义语法 | self 关键字 )
Python 「面向对象基本语法1」(判断对象的方法、定义类、示例)
在学基础语法之前先学习一下python中的一个内置函数dir。在python中对象几乎是无处不在的,之前学习的变量、数据、函数都是对象。
python自学网
2022/06/20
8160
Python 「面向对象基本语法1」(判断对象的方法、定义类、示例)
PHP面向对象-类和对象的定义(三)
在PHP中,类的属性和方法可以设置访问控制,以限制它们的访问权限。常用的访问控制有三种:公有(public)、私有(private)和受保护(protected)。
堕落飞鸟
2023/04/27
5710
PHP面向对象-类和对象的定义(五)
多态是面向对象编程中的另一个重要特性,它可以让不同的对象使用相同的方法,但是表现出不同的行为。在PHP中,多态可以通过接口和抽象类来实现。
堕落飞鸟
2023/04/27
6230
C++面向对象编程类对象的定义
对象和对象之间的关系:分别使用不同的内存来存储数据,使用相同的内存上的函数(一份函数拷贝)
风骨散人Chiam
2020/10/28
1K0
PHP面向对象-类和对象的定义(一)
在PHP面向对象编程中,类和对象是最基础和最重要的概念。类是一种抽象的数据类型,它定义了一组属性和方法,用来描述某种事物的特征和行为;而对象则是类的一个实例,它具有类定义的属性和方法,并可以进行相应的操作。
堕落飞鸟
2023/04/27
5810
PHP面向对象-类和对象的定义(四)
继承是面向对象编程中的另一个重要特性,它可以让一个类继承另一个类的属性和方法,并可以对它们进行扩展和修改。在PHP中,可以使用extends关键字实现类的继承,语法如下:
堕落飞鸟
2023/04/27
4800
PHP面向对象-类和对象的定义(二)
其中,对象名可以任意指定,类名必须与定义的类名一致,参数列表是传递给构造函数的参数,可以为空。创建对象时,PHP会自动调用构造函数,并为对象的属性赋初始值。
堕落飞鸟
2023/04/27
5640
【tensorflow2.0】AutoGraph和tf.Module
而Autograph机制可以将动态图转换成静态计算图,兼收执行效率和编码效率之利。
西西嘛呦
2020/08/26
7460
【tensorflow2.0】AutoGraph和tf.Module
类与对象的绑定方法
类与对象的绑定方法 class OldboyStudent: school = 'oldboy' def __init__(self, name, age, gender): self.name = name self.age = age self.sex = gender def choose_course(self): print(f'{self.name} choosing course') def
py3study
2020/01/15
7730
Python面向对象编程-类和对象-类的定义和使用(一)
类是一种定义了一组属性和方法的模板。属性是对象的数据成员,而方法是对象的函数成员。类是一个抽象的概念,它只描述了对象的行为和状态,并不具体实现。
玖叁叁
2023/04/18
6130
Python面向对象编程-类和对象-类的定义和使用(三)
我们可以使用点号 . 来访问对象的属性。例如,如果我们有一个名为 name 的属性,我们可以使用 p1.name 来访问它。
玖叁叁
2023/04/18
6870
Python面向对象编程-类和对象-类的定义和使用(二)
在类中定义方法时,第一个参数必须是 self。self 表示对象本身。当调用方法时,Python 自动将对象作为方法的第一个参数传递。我们可以使用 self 来访问和操作对象的属性。
玖叁叁
2023/04/18
5660
创建自定义类的对象数组
CN_Simo
2017/12/26
2.3K0
创建自定义类的对象数组
小谈startup类ConfigureServices方法的作用
这个是我在面试中遇到的一道面试题,记录下来分享给大家。 简单说ConfigureServices是配置服务器的DI容器,可以添加一些服务进到依赖注入容器中。具体来说就是把中间件等添加到DI容器中,最后都是添加到IServiceCollection中,比如下面的代码:
喵叔
2021/11/29
8440
Tensorflow2.0常用基础API
tensorflow2.0改进之后已经非常像numpy形式了,不用像之前的session那样操作,一些基本的操作如下。需要注意的店以及部分数据均写在代码注释中。
Mirza Zhao
2023/06/26
7880
类和对象的初步接触与定义
        在C++优化和解决完C的指针和大工程容易导致的函数和变量命名冲突后,C++对于C的又有一个重大的优化和改进——struct结构体。在C++中因为要兼容C所以C++用了一个新名字——class类。
比特大冒险
2023/04/16
4200
类和对象的初步接触与定义
PHP方法类与对象的区别
不知道有人是否和作者一样,不是特别的能区分方法类和对象的区别呢。那么今天就用一个简单例子解释类和对象的区别。
小唐同学.
2022/03/07
1.6K0
点击加载更多

相似问题

在PRD报告中创建动态链接

11

具有三列的交叉表

10

具有动态列数的报告

12

Postgres交叉表动态列数

12

jasper报告:交叉表上的自定义列

130
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文