微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R 中的条件累积和/差

如何解决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 举报,一经查实,本站将立刻删除。