【问题标题】:dplyr: Calculate account balance per daydplyr:计算每天的账户余额
【发布时间】:2020-04-03 13:39:33
【问题描述】:

我需要绘制一个帐户余额的预测,但我正在努力使用 dplyr 计算每日余额。不起作用的是这种使用 dplyr::lag 的方法,因为 lag 看不到变异值:

my_balance <- 100
df <- data.frame(day = 1:10, cost = c(-20,-30,-10,-30,-40,-20,-30,-35,-10,-12), revenue = c(100,20,0,12,7,100,20,30,15,12))
df %>%
  mutate(balance = lag(balance, default = my_balance) + cost + revenue)

结果:

   day cost revenue balance
1    1  -20     100     180
2    2  -30      20      90
3    3  -10       0      90
4    4  -30      12      82
5    5  -40       7      67
6    6  -20     100     180
7    7  -30      20      90
8    8  -35      30      95
9    9  -10      15     105
10  10  -12      12     100

预期结果:

   day cost revenue balance
1    1  -20     100     180
2    2  -30      20     170
3    3  -10       0     160
4    4  -30      12     142
5    5  -40       7     109
6    6  -20     100     189
7    7  -30      20     179
8    8  -35      30     174
9    9  -10      15     179
10  10  -12      12     179

我可以使用什么来使用之前计算的总和创建每行的余额?

【问题讨论】:

    标签: r dplyr


    【解决方案1】:

    您可以使用cumsum() 中的cost + revenue 添加到my_balance

    library(dplyr)
    
    df %>%
      mutate(balance = my_balance + cumsum(cost + revenue))
    #>    day cost revenue balance
    #> 1    1  -20     100     180
    #> 2    2  -30      20     170
    #> 3    3  -10       0     160
    #> 4    4  -30      12     142
    #> 5    5  -40       7     109
    #> 6    6  -20     100     189
    #> 7    7  -30      20     179
    #> 8    8  -35      30     174
    #> 9    9  -10      15     179
    #> 10  10  -12      12     179
    

    reprex package (v0.3.0) 于 2020 年 4 月 3 日创建

    【讨论】:

    • 谢谢!我确实玩过 cumsum,但看起来我太累了,无法做到这一点!
    猜你喜欢
    • 2011-05-21
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    相关资源
    最近更新 更多