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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:31:34