长格式时序数据如何按Timepoint拆分输出缺失值统计结果
问题原因
gg_miss_var() 本身不支持dplyr分组语法,所以直接在group_by()后调用函数无法实现按时间点拆分统计的效果。
解决方案
以下代码兼顾缺失值可视化需求和后续分组分析的复用性:
- 提前定义
target_vars变量列表,后续需要调整统计变量时仅需修改该处即可 - 拆分后的
df_split是按时间点命名的数据集列表,后续需要按时间点跑回归、做统计时可直接复用该列表,无需重复拆分数据 - 生成的
miss_plots是各时间点对应的缺失值统计图列表,可直接提取对应时间点的结果:- 查看baseline时间点结果:
miss_plots$baseline - 查看year1时间点结果:
miss_plots$year1 - 查看year2时间点结果:
miss_plots$year2
- 查看baseline时间点结果:
library(tidyverse) library(naniar) # 示例数据 df <- structure(list(ID = c(1L, 1L, 1L, 2L, 2L, 3L), Timepoint = c("baseline", "year1", "year2", "baseline", "year1", "baseline"), Score.1 = c(NA, 6, 4, 4, 5, 5), Score.2 = c(11, 10, 8, 8, 8, 9), Score.3 = c(4, NA, 9, 10, 8, 6), Score.4 = c(22, 50, 33, 28, 27, 33)), row.names = c(NA, -6L), class = c("tbl_df", "tbl", "data.frame")) # 自定义待分析变量,修改仅需调整此处 target_vars <- c("Score.1","Score.2","Score.3","Score.4") # 按时间点拆分数据集,生成命名列表方便后续复用 df_split <- df %>% group_by(Timepoint) %>% group_split() %>% setNames(group_keys(df, Timepoint) %>% pull(Timepoint)) # 批量生成各时间点缺失值统计图 miss_plots <- map(df_split, ~ gg_miss_var(.x[, target_vars]))
内容的提问来源于stack exchange,提问作者AEP
相关产品推荐
相关产品推荐

