使用R统计REDCap数据库中患者不良事件重复发生次数
解决REDCap重复事件中统计有效不良事件数量的问题
核心思路
REDCap的重复事件结构会让同一患者对应多行数据:主数据行(ae_repeat=NA)存储患者基本信息,重复事件行(ae_repeat=1)记录不良事件。我们需要先按患者ID分组统计有效不良事件(ae_type非NA)的数量,再将统计结果合并回原数据集。
具体代码实现
首先加载dplyr工具包:
library(dplyr)
1. 修正列名(处理示例笔误)
示例数据中列名recor_id应为record_id,先修正:
df <- df %>% rename(record_id = recor_id)
2. 统计每位患者的有效不良事件数
# 分组统计有效不良事件总数 ae_count_summary <- df %>% group_by(record_id) %>% summarise(ae_count = sum(!is.na(ae_type)), .groups = "drop")
sum(!is.na(ae_type)):将ae_type非NA的行标记为TRUE(转数值为1),求和得到有效事件总数.groups = "drop":统计完成后取消分组,避免后续操作的分组干扰
3. 合并统计结果到原数据集
如果需要保留所有行(包括重复事件行),使用left_join:
df_with_ae_count <- df %>% left_join(ae_count_summary, by = "record_id")
如果只需要保留包含患者基本信息的主数据行(ae_repeat=NA):
main_data_with_ae_count <- df %>% filter(is.na(ae_repeat)) %>% left_join(ae_count_summary, by = "record_id")
验证结果
对示例数据执行后,最终统计值为:
- 患者1的
ae_count为1 - 患者2的
ae_count为1 - 患者3的
ae_count为2
内容的提问来源于stack exchange,提问作者Fabian Brennecke
相关产品推荐
相关产品推荐

