R中带条件的Cumsum
我想在R中对值列表执行此excel操作: =如果($H2+$G3>0;$H2+$G3;0) 数据:R中带条件的Cumsum,r,loops,if-statement,dplyr,cumsum,R,Loops,If Statement,Dplyr,Cumsum,我想在R中对值列表执行此excel操作: =如果($H2+$G3>0;$H2+$G3;0) 数据: d <- c(0.007084, 0.000037, -0.400000, -0.400000, 0.000033, 0.000467, 0.001167, 0.000363) d% 选择(-grp) 应该很简单,但由于某种原因我不能让它工作 循环(且速度较慢)是cumsum的替代方法,即Reduce(`+`,x,accumulate=TRUE)。但是,这种Reduce方法可以修改
d <- c(0.007084, 0.000037, -0.400000, -0.400000, 0.000033, 0.000467, 0.001167, 0.000363)
d%
选择(-grp)
应该很简单,但由于某种原因我不能让它工作
循环(且速度较慢)是cumsum
的替代方法,即Reduce(`+`,x,accumulate=TRUE)
。但是,这种Reduce
方法可以修改为重置累计金额:
Reduce(function(x, y) if (x + y > 0) x + y else 0, d, accumulate = TRUE)
d1 <- d %>%
group_by(grp = cumsum(lag(cumsum(replace(values, is.na(values), 0.000000)) < 0.000000, default = TRUE))) %>%
mutate(calc = cumsum(replace(values, is.na(values), 0.000000)), calc = replace(calc, calc < 0.000000, 0.000000)) %>%
ungroup() %>%
select(-grp)
Reduce(function(x, y) if (x + y > 0) x + y else 0, d, accumulate = TRUE)