我有一个相对较大的数据帧(~2,000,000行),对于每一行,我需要在该观察组中计算大于或等于当前行值的每个值的总和.
这是一个示例数据框:
sample_df = data.frame(
group_id = c(1,1,1,1,2,2,2,2),
value = c(10,12,14,12,8,8,21,10)
)
Run Code Online (Sandbox Code Playgroud)
我目前有一个非常缓慢的解决方案,使用循环和一些过滤来做到这一点,但是,更好的解决方案是更优选的.我一直在尝试使用dplyr,但我无法弄清楚如何在数据分组后得到其他观察值的总和.
通过上面的玩具示例,这里将是所需的输出:
desired_output = data.frame(
group_id = c(1,1,1,1,2,2,2,2),
value = c(10,12,14,12,8,8,21,10),
output = c(38,26,0,26,39,39,0,21)
)
Run Code Online (Sandbox Code Playgroud)
为了找到已经发布的解决方案,我没有看到一个明确的答案,它解释了如何将一组中的每个观察结果与其他观察结果进行比较,并按照某些标准对该组进行筛选.我更喜欢基于dplyr的解决方案,但如果有高效的base-R或data.table解决方案,我会同样感激!