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

编写R代码:按name-month分组筛选小于指定值的最后销售对应产品

解决方案

可以使用dplyr包的分组操作来实现需求,步骤如下:

代码实现

# 若未安装dplyr,先执行安装命令
# install.packages("dplyr")
library(dplyr)

# 原始数据
val = 14
name = c("Tim", "Tim", "Tim", "Tim", "Tim", "Tim", "Carl", "Carl", "Carl", "Carl" , "Carl" , "Carl")
month = c(1,1,1,2,2,2,1,1,1,2,2,2)
product = c("a", "b", "c", "a", "b", "c", "a", "b", "c", "a", "b", "c")
sales = c(10, 11, 14, 10, 15, 18, 11, 22, 33, 7, 14, 15)
df = data.frame(name, month, product, sales)

# 核心处理逻辑
result_df <- df %>%
  group_by(name, month) %>%  # 按name和month的组合分组
  filter(sales < val) %>%    # 筛选每组中sales小于val的行
  slice_tail(n = 1) %>%      # 取筛选后的最后一行
  select(name, month, product) %>%  # 保留需要的列
  ungroup()  # 取消分组,转为普通数据框

# 输出结果
print(result_df)

代码说明

  • group_by(name, month):将数据按name和month的唯一组合分组,确保每组对应一个需求中的组合。
  • filter(sales < val):仅保留每组中sales值小于val的行。
  • slice_tail(n = 1):提取每组筛选后的最后一行,即符合条件的最后一条记录。
  • select(name, month, product):只保留结果所需的三列。

补充说明

若需求是最后一个小于等于val的行(即包含等于val的情况),只需将filter(sales < val)修改为filter(sales <= val),此时运行结果会匹配你示例中提到的Tim-1对应product=c的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 20:52:43