虚拟数据集是:
data <- data.frame(
id = c(1,1,2,2,3,4,5,6),
value = c(10,10,20,20,10,30,40,50),
other = c(1,2,3,4,5,6,7,8)
)
数据是 dplyr
管道中 group_by(id)
操作的输出 . 每个 id
最多与一个值相关联,而两个不同的 id
可以具有相同的值 . 我需要通过添加新列来查找ID之间的累积总和: cum_col = c(10,10,30,30,40,70,110,160)
mutate
中的 cumsum
将在整列值中找到累积总和,并且不会为每个组选择一个值 . summarise
没用,因为我需要保留其他列 .
有没有出路而没有使用 summarise
然后 join
-ing它向后?或者,如果之前已经回答,请指出我链接 .
编辑:仅供参考,实际数据有大约200万行和100列 .
3 回答
一种替代方法可以是通过id列嵌套数据帧,计算累积总和然后不需要:
与
summarize
和join
比较:Summarize
然后join
实际上更快 .使用更大的数据集:
另一种方法是我们创建一个虚拟列(
cols
),每个组只有第一个value
,其余的被0替换,然后我们在整个列上取cumsum
.我们也可以用
duplicated