R 带滞后和ifelse的滚动计算
我试图计算数据框中一列的累积和,但我只希望它是基于一个条件完成的 我对R非常陌生,尝试在R中转换下面的spss代码,以实现下面的数据框架,根据lca是否与上面的行相同,以及如果相同,则将健康净成本添加到上面的累积成本,使用一个名为“累积”的新列R 带滞后和ifelse的滚动计算,r,dataframe,cumulative-sum,R,Dataframe,Cumulative Sum,我试图计算数据框中一列的累积和,但我只希望它是基于一个条件完成的 我对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.
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
这可能是您寻找问题的解决方案。 使用求和函数
df <- data.frame("LCA" = c(10,10,10,28,28,8,8,8),"Health_Net_Cost" = c(100,200,300,400,100,100,200,300))
df
运行:
编辑:
如果您希望累计金额按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
install.packages(“dplyr”)
图书馆(dplyr)
df%>%
分组依据(LCA)%>%
突变(“累积”=总和(健康净成本))
#一个tibble:8x3
#分组:生命周期评价[3]
生命周期评价健康净成本累计
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
谢谢-我在上面生成了错误的数据框,我对这个网站太陌生了,所以我不知道如何在我的评论中添加R数据框。我想要的与上面的大致相同,但如果lca与上面的lca不匹配,则累积成本将是第一个lca的健康净成本-例如,第一个lca“8”,累积成本将是100。因此,您想要按lca分组的累积成本?请参见更新的答案。这就是你要找的吗?嗨,欢迎来到SO!以下是一些关于如何提问和设置问题格式的信息。为您迄今为止所尝试的内容包含代码始终是一个好主意。您还可以使用data.frame中的dput()
函数(通过在控制台中运行?dput
查看帮助文件)提供更多可用的示例数据,并通过“编辑”链接将输出复制粘贴到您的问题中。这看起来非常像我刚刚发布的编辑过的答案……是的,我读了评论并修改了之前的答案。没有看我的代码?老实说?是的!这只是偶发事件。享受:-)
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
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