将研究水平Meta分析数据转换为个体患者水平数据
将研究水平Meta分析数据转换为个体患者水平数据
下面是用R语言实现转换的具体代码和说明:
首先加载tidyverse工具包(首次运行需先安装,执行install.packages("tidyverse")),再处理你的数据:
# 安装并加载tidyverse工具包(首次运行需安装) # install.packages("tidyverse") library(tidyverse) # 读取原始研究水平数据 data2 <- read.table(text="STUDY TOTAL POAF Age_POAF CRESWELL, 1993 3983 1378 99 ARANKI, 1996 570 189 77 KOLVEKAR, 1997 50 25 NA ALMASSI, 1997 3855 1143 66.8 TAMIS, 2000 216 55 NA STAMOU, 2000 969 206 69 HAKALA, 2002 3676 1141 63.9 HRAVNAK, 2002 814 260 69.6 SILVA, 2004 158 45 NA VILLAREAL, 2004 6475 994 66 ", header=T, sep="\t") # 转换为个体患者水平数据 ipd_data <- data2 %>% rowwise() %>% # 生成对应研究的POAF状态:前POAF条标记为Yes,剩余为No mutate(POAF = list(c(rep("Yes", POAF), rep("No", TOTAL - POAF)))) %>% # 将状态列表展开为单行对应一个患者 unnest_longer(POAF) %>% ungroup() # 查看转换后的前几行结果 head(ipd_data)
代码说明
rowwise():按每个研究单独处理数据mutate(POAF = list(...)):为每个研究生成包含TOTAL个元素的状态向量,前POAF个值为"Yes",剩下的为"No";如果需要用1/0标记,把"Yes"换成1、"No"换成0即可unnest_longer(POAF):把状态向量拆分成多行,每行对应一个患者- 原始的
Age_POAF值会自动重复到对应研究的所有患者行中,包括NA值也会保留
内容的提问来源于stack exchange,提问作者Mohamed Rahouma
相关产品推荐
相关产品推荐

