如何在R中筛选面板数据中mmse变量被测量多次的研究对象
解决方案:提取mmse测量≥2次的研究对象数据集
核心思路
先筛选出拥有至少2个非缺失mmse值的研究对象(pid),再提取这些对象的全部观测数据,后续即可基于此分析基线特征或mmse变化。
步骤1:筛选并提取目标数据集
可以用dplyr一步完成筛选:
library(dplyr) # 提取符合条件的完整数据集 filtered_df <- df %>% group_by(pid) %>% # 保留mmse非缺失值≥2次的pid组 filter(sum(!is.na(mmse)) >= 2) %>% ungroup() # 取消分组,避免后续操作干扰
如果需要先单独获取符合条件的pid列表,再提取数据:
# 获取有效pid列表 valid_pids <- df %>% group_by(pid) %>% filter(sum(!is.na(mmse)) >= 2) %>% pull(pid) %>% unique() # 提取对应数据集 filtered_df <- df %>% filter(pid %in% valid_pids)
步骤2:计算mmse变化(针对筛选后的数据)
你之前的代码未成功,是因为示例数据中mmse全为NA,没有符合条件的样本。在筛选后的数据集上运行以下代码即可得到mmse的变化情况:
filtered_df %>% arrange(pid, wave) %>% group_by(pid) %>% mutate( mmse_change = mmse - lag(mmse), mmse_increase = mmse_change > 0, mmse_decrease = mmse_change < 0 ) %>% ungroup()
步骤3:提取基线特征数据
如果需要分析每个研究对象的基线(第一次观测)特征:
baseline_df <- filtered_df %>% arrange(pid, wave) %>% group_by(pid) %>% slice(1) %>% # 取每个pid的第一次wave数据 ungroup()
内容的提问来源于stack exchange,提问作者j.yj
相关产品推荐
相关产品推荐

