> df
Date User Current_Coins
01/01 1 150
01/02 1 100
01/01 2 100
01/02 2 150
01/01 3 100
01/02 3 150
01/03 3 100
01/04 3 200
01/04 3 0
Run Code Online (Sandbox Code Playgroud)
根据用户当前拥有多少硬币,我想总结使用dplyr使用和获得的硬币总和.
预期结果:
> df
User Coins_Gained Coins_Used
1 0 50
2 50 0
3 150 250
Run Code Online (Sandbox Code Playgroud)
我尝试使用lag()但不分开硬币的使用和收益.我想不出一个雄辩的解决方案,任何帮助将不胜感激.
这是一种方法:
library(dplyr)
df %>%
group_by(User) %>%
mutate(x = Current_Coins - lag(Current_Coins)) %>% # compute the differences
summarise(Coin_gained = sum(x[x>0], na.rm = TRUE), # sum up positives
Coin_used = abs(sum(x[x<0], na.rm = TRUE))) # sum up negatives
#Source: local data frame [3 x 3]
#
# User Coin_gained Coin_used
#1 1 0 50
#2 2 50 0
#3 3 150 250
Run Code Online (Sandbox Code Playgroud)