如何解决R 中的条件累积和/差
我有以下数据集:
library(data.table)
dt <- fread('
Year ID Total Quantity
2017 A 2000 100
2016 A 2000 200
2015 A 2000 50
2014 B 2000 100
2013 B 2000 300
')
我想创建以下数据集:
want <- fread('
Year ID Total Quantity Balance
2017 A 2000 100 1900
2016 A 2000 200 1700
2015 A 2000 50 1650
2014 B 2000 100 1650
2013 B 2000 300 1650
')
仅当 ID == A 时,balance
列是通过从 Quantity
中减去 Total
创建的。但是,这是一个累积过程,我们首先计算第一行的余额 ( 1900),然后使用该值计算第二行中的余额 (1900 - 200 = 1700)。
对我如何做到这一点有什么建议吗?
谢谢
解决方法
您可以使用 cumsum
of dt$Quantity
乘以条件 dt$ID=="A"
,假设第一行可用于开始。
dt$Balance <- dt$Total[1] - cumsum(dt$Quantity * +(dt$ID=="A"))
dt
# Year ID Total Quantity Balance
#1: 2017 A 2000 100 1900
#2: 2016 A 2000 200 1700
#3: 2015 A 2000 50 1650
#4: 2014 B 2000 100 1650
#5: 2013 B 2000 300 1650
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。