重塑/转换研究水平的荟萃分析为个体患者数据荟萃分析

Reshape/convert study-level meta-analysis to individual patients data meta-analysis

提问人:Mohamed Rahouma 提问时间:8/7/2023 最后编辑:TylerHMohamed Rahouma 更新时间:8/7/2023 访问量:24

问:

我有研究级别的荟萃分析数据,我想将其重塑/转换为患者级别的数据

这是我的数据示例

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")

我希望它创建 3983 行(总病例数),所有这些行在研究列和 POAF 中都标记为“CRESWELL,1993”,前 1378 行(POAF 的病例数)应标记为 or,而其余为 or ,并且所有行的列都为 99,然后我们移动到原始数据的第二行并创建 570 行Yes1No0Age_POAF

例如,如下所示

STUDY           TOTAL   POAF   Age_POAF
CRESWELL, 1993  3983    Yes    99
CRESWELL, 1993  3983    Yes    99
CRESWELL, 1993  3983    Yes    99
CRESWELL, 1993  3983    Yes    99
...      ...    ....   ...   ....
ARANKI, 1996    570     Yes   77
ARANKI, 1996    570     Yes   77
ARANKI, 1996    570     Yes   77
...      ...    ....   ...   ....
R 数据帧 重塑

评论


答:

2赞 benson23 8/7/2023 #1

您可以先在列中展开数据集,然后通过简单的赋值来分配正确的值。uncount()TOTALifelsePOAF

library(tidyverse)

uncount(data2, TOTAL, .remove = F) |> 
  mutate(POAF = ifelse(row_number() <= POAF, "Yes", "No"), .by = STUDY)

一些示例行:

             STUDY TOTAL POAF Age_POAF
1376 CRESWELL,1993  3983  Yes       99
1377 CRESWELL,1993  3983  Yes       99
1378 CRESWELL,1993  3983  Yes       99
1379 CRESWELL,1993  3983   No       99
1380 CRESWELL,1993  3983   No       99
1381 CRESWELL,1993  3983   No       99
...
3982 CRESWELL,1993  3983   No       99
3983 CRESWELL,1993  3983   No       99
3984   ARANKI,1996   570  Yes       77
3985   ARANKI,1996   570  Yes       77
3986   ARANKI,1996   570  Yes       77