如何解决带有滞后和 ifelse 的滚动计算
我正在尝试计算数据框中某列的累积总和,但我只想根据条件来完成。
我对 R 非常陌生,并尝试在 R 中转换下面的这个 spss 代码,以根据 lca 是否与上面的行相同,然后添加健康网络,使用名为累积的新列来实现下面的数据框成本到上面的累计成本。
spss code:
IF LAG(LCA) NE LCA cumulative=health_net_cost.
IF LAG(LCA)=LCA cumulative=LAG(cumulative)+health_net_cost.
EXECUTE.
R 中的数据框
Lca health_net_cost cummulative
10 100 100
10 200 300
10 300 600
28 400 1000
28 100 1100
8 100 1200
8 200 1400
8 300 1700
解决方法
这可能是您寻找问题的解决方案。 使用 cumsum 函数。
df <- data.frame("LCA" = c(10,10,28,8,8),"Health_Net_Cost" = c(100,200,300,400,100,300))
df
输出:
LCA Health_Net_Cost
10 100
10 200
10 300
28 400
28 100
8 100
8 200
8 300
运行:
cum_df <- df%>%group_by(LCA)%>%mutate(Cumulative=cumsum(Health_Net_Cost))
cum_df
您的预期输出:
LCA Health_Net_Cost Cumulative
10 100 100
10 200 300
10 300 600
28 400 400
28 100 500
8 100 100
8 200 300
8 300 600
,
编辑:
如果您希望按 LCA
分组的累积总和,这可能会有所帮助:
install.packages("dplyr")
library(dplyr)
df %>%
group_by(LCA) %>%
mutate("cumulative" = cumsum(Health_Net_Cost))
# A tibble: 8 x 3
# Groups: LCA [3]
LCA Health_Net_Cost cumulative
<dbl> <dbl> <dbl>
1 10 100 100
2 10 200 300
3 10 300 600
4 28 400 400
5 28 100 500
6 8 100 100
7 8 200 300
8 8 300 600
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。