【发布时间】:2018-09-01 10:13:20
【问题描述】:
我有一个相对较大的数据框(约 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)
)
我目前有一个非常慢的解决方案来使用循环和一些过滤来做到这一点,但是,有一个更快的解决方案将是更可取的。我一直在尝试使用 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)
)
四处寻找已经发布的解决方案,我还没有看到一个明确的答案来解释如何将一个组中的每个观察结果与该组中的其他观察结果进行比较,这些观察结果按某些标准进行过滤。我更喜欢基于 dplyr 的解决方案,但如果有有效的 base-R 或 data.table 解决方案,我将不胜感激!
【问题讨论】:
-
第 1 组中的值 12 为什么会输出 24?我希望 26
-
我很好奇 data.table 解决方案!!
-
...因为我刚刚在创建输出时搞砸了二年级数学:(。为那个错误道歉!
-
我允许自己编辑它;)
标签: r dplyr data.table