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

R使用dplyr按ID和X1分组后比较日期筛选符合条件记录的方法

R dplyr分组筛选组内日期间隔≤1天记录的实现方案

完整实现代码

# 加载dplyr包
library(dplyr)

# 数据处理逻辑
df %>%
  # 按要求的ID、X1字段分组,自动忽略不需要的X2字段
  group_by(ID, X1) %>%
  # 分组内按日期升序排序,避免原数据日期乱序导致间隔计算错误
  arrange(dat, .by_group = TRUE) %>%
  # 筛选满足条件的分组:组内记录数≥2、且组内日期间隔最小值≤1天
  filter(n() >= 2, min(abs(diff(dat))) <= 1) %>%
  # 按需保留输出字段,和预期结果格式对齐
  select(ID, X1) %>%
  # 取消分组
  ungroup()

逻辑说明

  • 分组环节直接指定ID和X1两个字段即可,不需要额外处理X2字段,不会影响后续计算
  • 优先过滤单记录分组:只有1条记录的分组不存在多记录日期间隔,直接排除可提高计算效率
  • 日期间隔计算:先对分组内的日期排序,再用diff()计算相邻日期的间隔,取绝对值后判断最小值是否≤1天,满足条件就保留该组全部记录

运行输出结果

运行上述代码即可得到预期输出:

ID X1
1  1  A
2  1  A
3  4  B
4  4  B

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:06:02