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

R语言基于条件对分组数据框筛选指定观测的实现咨询

R语言分组筛选实现方案

依赖包

需提前安装加载dplyr用于数据分组处理,lubridate用于日期格式校验:

install.packages(c("dplyr", "lubridate"))
library(dplyr)
library(lubridate)

核心实现逻辑

按ID分组后先对组内数据按日期升序排列,再根据组内Test的取值情况匹配筛选规则:

  • 组内所有Test均为0:取组内最后一行(对应最新日期)
  • 组内所有Test均为1:取组内第一行(对应最早日期)
  • 组内同时存在0和1:取第一个Test取值为1的行

完整代码示例

1. 构造示例测试数据

df <- tibble(
  ID = c(rep("A",3), rep("B",3), rep("C",3)),
  Date = ymd(c("2023-01-01", "2023-01-02", "2023-01-03",
               "2023-01-01", "2023-01-02", "2023-01-03",
               "2023-01-01", "2023-01-02", "2023-01-03")),
  Test = c(0,0,0, 0,1,1, 1,1,1)
)

2. 执行筛选

result <- df %>%
  # 按ID和日期升序排列,保证日期顺序正确
  arrange(ID, Date) %>%
  group_by(ID) %>%
  slice(
    case_when(
      max(Test) == 0 ~ n(),
      min(Test) == 1 ~ 1,
      TRUE ~ which(Test == 1)[1]
    )
  ) %>%
  ungroup()

3. 输出结果验证

上面的示例数据执行后得到的结果如下,完全符合筛选规则:

IDDateTest
A2023-01-030
B2023-01-021
C2023-01-011

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 07:06:05