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

长格式纵向数据筛选求助:基于多时间点分数过滤案例

纵向数据案例筛选解决方案

针对你的长格式纵向数据筛选需求,以下是基于dplyr的可行实现方案:

需求1:筛选至少2个时间点score≥6的案例

通过按id分组,统计每个案例中满足score≥6的时间点数量,保留数量≥2的案例:

library(dplyr)

# 筛选符合需求1的案例(保留该案例的所有行)
filtered_df1 <- df %>%
  group_by(id) %>%
  filter(sum(score >= 6, na.rm = TRUE) >= 2) %>%
  ungroup()

# 查看筛选后的唯一id
filtered_df1 %>% distinct(id)

逻辑说明:

  • group_by(id):按案例id分组,对每个案例单独计算
  • sum(score >= 6, na.rm = TRUE):统计当前案例中score≥6的时间点数量,na.rm=TRUE避免缺失值干扰
  • filter(...):保留满足条件的分组,最后ungroup()取消分组恢复数据结构

需求2:筛选完成Baseline到Visit4全部时间点且score均<6的案例

先定义需要的时间点集合,再验证每个案例是否完成全部随访,同时检查对应时间点的score是否都低于6:

# 定义需要的随访时间点(不含Visit5)
required_visits <- c("Baseline", "Visit1", "Visit2", "Visit3", "Visit4")

# 筛选符合需求2的案例(保留该案例的所有行)
filtered_df2 <- df %>%
  group_by(id) %>%
  filter(
    # 验证是否完成全部必需的随访时间点
    all(required_visits %in% visit),
    # 验证这些时间点的score均低于6
    all(score[visit %in% required_visits] < 6)
  ) %>%
  ungroup()

# 查看筛选后的唯一id
filtered_df2 %>% distinct(id)

逻辑说明:

  • all(required_visits %in% visit):检查当前案例的随访记录是否包含所有必需的时间点,排除未完成全部随访的案例
  • all(score[visit %in% required_visits] < 6):仅针对必需时间点的score,验证是否全部低于6

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:02:53