R 带滞后和ifelse的滚动计算

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.

我试图计算数据框中一列的累积和,但我只希望它是基于一个条件完成的

我对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

这可能是您寻找问题的解决方案。 使用求和函数

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