You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用dplyr实现按分组取每组最后两行并对指定字段求和

解决方案

你可以使用dplyr提供的slice_tail()函数快速提取每个分组的最后两行,调整后的代码如下:

library(dplyr)

data %>%
  group_by(Company) %>%
  slice_tail(n = 2) %>%
  summarise(Sum = sum(Revenue))

执行上述代码后即可得到你需要的输出结果。

注意事项

如果你的数据集行顺序可能发生变动,建议先按照确定的排序规则(如记录生成时间、自增序号等)排序后再执行筛选逻辑,避免“最后两行”的定义不符合预期,示例如下:

data %>%
  arrange(排序字段) %>% # 替换为你实际用于确定顺序的字段
  group_by(Company) %>%
  slice_tail(n = 2) %>%
  summarise(Sum = sum(Revenue))

旧版本兼容写法

如果你使用的dplyr版本较低不支持slice_tail(),可以通过行号判断实现相同效果:

data %>%
  group_by(Company) %>%
  filter(row_number() > n() - 2) %>%
  summarise(Sum = sum(Revenue))

这里n()返回当前分组的总行数,row_number()返回当前行在分组内的行号,筛选条件会保留分组内的最后两行。


内容的提问来源于stack exchange,提问作者passcot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 15:15:03