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

在R中提取符合条件的首个有效周纵向A1C数据

在R中提取受试者首个“有效周”的A1C测量数据

需求说明

现有纵向实验室数据,每条记录对应一名受试者上传A1C测量值的日期。需完成以下操作:

  • 为每个受试者识别首个“有效周”:该周内至少有5天的测量记录
  • 若有效周包含6或7天的记录,提取该周的全部测量数据

示例数据

# 构造示例数据框
df <- data.frame(
  person_id = c(rep(1000492, 12), rep(1000499, 9)),
  date = as.Date(c(
    "2019-09-11", "2019-09-22", "2019-09-23", "2019-09-24",
    "2019-10-15", "2019-10-16", "2019-10-18", "2019-10-19",
    "2019-10-20", "2019-11-14", "2019-11-15", "2019-12-16",
    "2019-09-11", "2019-09-12", "2019-09-26", "2019-09-27",
    "2019-09-28", "2019-09-29", "2019-09-30", "2019-10-01",
    "2019-10-02"
  )),
  a1c = c(5.5, 5.7, 5.5, 5.6, 5.5, 5.6, 5.5, 5.7, 5.5, 5.6, 5.5, 5.6,
          5.5, 5.7, 5.5, 5.6, 5.5, 5.7, 5.5, 5.6, 5.5)
)

期望结果

# 提取后的目标数据框
result_df <- data.frame(
  person_id = c(rep(1000492, 5), rep(1000499, 7)),
  date = as.Date(c(
    "2019-10-15", "2019-10-16", "2019-10-18", "2019-10-19", "2019-10-20",
    "2019-09-26", "2019-09-27", "2019-09-28", "2019-09-29", "2019-09-30",
    "2019-10-01", "2019-10-02"
  )),
  a1c = c(5.5, 5.6, 5.5, 5.7, 5.5,
          5.5, 5.6, 5.5, 5.7, 5.5, 5.6, 5.5)
)

解决方案(使用tidyverse)

library(tidyverse)

# 处理数据:识别并提取首个有效周
final_df <- df %>%
  # 确保date列是日期格式(若原始数据未转换)
  mutate(date = as.Date(date)) %>%
  # 按受试者分组
  group_by(person_id) %>%
  # 标记日期所属周(以周日为一周起始,可通过week_start调整,1=周一)
  mutate(week = floor_date(date, "week", week_start = 7)) %>%
  # 统计每个周内的记录天数
  add_count(week, name = "days_in_week") %>%
  # 筛选有效周(天数≥5),提取每个受试者的第一个有效周
  filter(days_in_week >= 5) %>%
  slice_min(order_by = week, n = 1, with_ties = TRUE) %>%
  # 移除辅助列
  select(-week, -days_in_week) %>%
  ungroup()

# 查看结果
print(final_df)

代码说明

  1. floor_date(date, "week", week_start = 7):将日期归到所在周的起始日(周日),确保同一周的记录被归为一组
  2. add_count(week):统计每个周内的测量记录天数
  3. filter(days_in_week >=5):筛选出符合要求的有效周
  4. slice_min(order_by = week, n=1, with_ties=TRUE):提取每个受试者最早的有效周,with_ties=TRUE保证该周的所有记录都被保留

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 02:50:14