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

如何在R中筛选基线后1年±120天随访数据并计算急性加重总数

R语言实现随访记录筛选与急性加重次数统计

步骤1:加载工具包并导入数据

先加载tidyverse包(包含数据处理和日期操作的实用工具),再导入本地的测试数据集:

# 未安装则先安装,再加载tidyverse
if (!require(tidyverse)) {
  install.packages("tidyverse")
  library(tidyverse)
}

# 导入本地数据(假设文件名为data.csv)
df <- read_csv("data.csv")

步骤2:统一日期格式

确保baseline_date和fu_date转换为日期类型,避免字符串格式导致计算错误:

df <- df %>%
  mutate(
    baseline_date = as.Date(baseline_date),
    fu_date = as.Date(fu_date)
  )

如果你的日期格式不是默认的YYYY-MM-DD,可以在as.Date中指定格式,比如format = "%m/%d/%Y"适配月/日/年格式。

步骤3:筛选目标时间范围的随访记录

按患者ID分组,筛选出基线日期后245天到485天(365±120天)内的随访记录:

filtered_df <- df %>%
  group_by(subjectid) %>%
  filter(
    fu_date >= baseline_date + days(245),
    fu_date <= baseline_date + days(485)
  )

也可以通过计算天数差的方式筛选,效果一致:

filtered_df <- df %>%
  group_by(subjectid) %>%
  mutate(days_since_baseline = as.numeric(fu_date - baseline_date)) %>%
  filter(days_since_baseline >= 245 & days_since_baseline <= 485)

步骤4:计算每位患者的急性加重总数

基于筛选后的记录,按患者ID分组求和,生成急性加重次数汇总:

方式1:生成仅含患者ID和总次数的汇总表

exacerbation_summary <- filtered_df %>%
  group_by(subjectid) %>%
  summarise(
    total_exacerbations = sum(fu_exacerbations, na.rm = TRUE) # na.rm=TRUE处理缺失值
  )

方式2:将总次数合并回原数据集

如果需要让原数据的每条记录都带上对应患者的总次数,用左连接实现:

df_with_total <- df %>%
  left_join(exacerbation_summary, by = "subjectid")

额外提示

  • 用glimpse(df)查看数据结构,确认日期转换是否成功
  • 若数据存在缺失值,na.rm = TRUE能避免求和时出现错误结果

内容的提问来源于stack exchange,提问作者Salman Aslam Chaudhary

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 10:12:35