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

基于counter变量按4周分组DataFrame并筛选排序的R技术问题

解决方案

可以通过以下步骤实现需求,全程使用dplyr包完成:

  1. 生成4周分组标识:基于counter列计算每4周为一组的分组编号,确保1-4周、5-8周等被归为同一组。
  2. 分组排序并筛选:按新生成的分组列分组,在每组内按amount降序排序,最后保留每组中amount最高的30行。

完整代码示例(假设你的数据框名为df):

library(dplyr)

df_processed <- df %>%
  # 计算4周分组:1-4周为组1,5-8周为组2,以此类推
  mutate(week_group = floor((counter - 1) / 4) + 1) %>%
  # 按周组分组
  group_by(week_group) %>%
  # 在每组内按amount降序排列,确保数值最大的排在前面
  arrange(desc(amount), .by_group = TRUE) %>%
  # 保留每组前30行(即amount最高的30条记录)
  slice_head(n = 30) %>%
  # 取消分组(若后续不需要分组操作,建议执行此步)
  ungroup()

关键细节说明:

  • floor((counter - 1) / 4) + 1:这个计算逻辑能准确将连续4周归为一组,避免第4周和第5周被分到同一组的问题。
  • arrange中的.by_group = TRUE:必须添加该参数,否则排序会变成全局排序,而非分组内排序。
  • 若习惯用filter替代slice_head,可将slice_head(n = 30)替换为filter(row_number() <= 30),两者效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 17:30:11