小编Iai*_*man的帖子

有条件的cumsum与重置

我有一个数据框,数据框已按需要排序,但现在我想在组中"切片".

此组的最大累计值应为10.当累计值> 10时,它应重置累计总和并重新开始

library(dplyr)
id <- sample(1:15)
order <- 1:15
value  <- c(4, 5, 7, 3, 8, 1, 2, 5, 3, 6, 2, 6, 3, 1, 4)
df  <- data.frame(id, order, value)
df
Run Code Online (Sandbox Code Playgroud)

这是我正在寻找的输出(我是"手动"完成的)

cumsum_10  <- c(4, 9, 7, 10, 8, 9, 2, 7, 10, 6, 8, 6, 9, 10, 4)
group_10 <- c(1, 1, 2, 2, 3, 3, 4, 4, 4, 5, 5, 6, 6, 6, 7)
df1  <- data.frame(df, cumsum_10, group_10)
df1
Run Code Online (Sandbox Code Playgroud)

所以我遇到了两个问题

  1. 如何创建一个累积变量,每当它超过上限时重置(在这种情况下为10)
  2. 如何计算/分组每个组

对于第一部分,我尝试了group_by和cumsum的一些组合而没有运气

df1 <- …
Run Code Online (Sandbox Code Playgroud)

r reset cumsum dplyr

13
推荐指数
4
解决办法
1651
查看次数

标签 统计

cumsum ×1

dplyr ×1

r ×1

reset ×1