小编Joh*_* K.的帖子

对于分组数据帧(dplyr)R中的每个元素,值的总和大于或等于

我有一个相对较大的数据帧(~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解决方案,我会同样感激!

r dplyr data.table

10
推荐指数
2
解决办法
1311
查看次数

标签 统计

data.table ×1

dplyr ×1

r ×1