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

R语言如何按子组不同规则对数据集执行条件筛选

实现方案

因为每个id对应的event值是唯一的,所以直接按id分组后,在filter中根据组内的event值判断采用对应筛选规则即可,无需拆分数据集再合并,代码更简洁。

首先加载依赖包:

library(dplyr)
library(lubridate)

筛选代码如下:

result <- df %>%
  group_by(id) %>%
  filter(
    if (first(event) == 0) {
      # event为0时保留组内最近24小时数据
      time > last(time) - hours(24)
    } else {
      # event为1时保留day等于6的数据
      day == 6
    }
  ) %>%
  ungroup()

运行后输出结果:

# A tibble: 5 × 4
     id event   day time               
  <dbl> <dbl> <dbl> <dttm>             
1     1     0     3 2016-10-27 12:00:15
2     1     0     3 2016-10-27 15:30:00
3     2     1     6 2016-10-28 08:00:15
4     2     1     6 2016-10-28 23:00:00
5     3     0     6 2016-10-29 16:00:00

如果你的实际场景中同个id存在多个event值的情况,将筛选条件替换为下面的写法即可适配:

filter((event == 0 & time > last(time) - hours(24)) | (event == 1 & day == 6))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 15:48:01