将研究级荟萃分析重塑/转换为个体患者数据荟萃分析

问题描述 投票:0回答:1

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

这是我的数据样本

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 行(总病例数),所有行在研究列中都标记为“CRESWELL,1993”,在 POAF 中,前 1378 行(POAF 病例数)应标记为

Yes
 1
其余为
No
0
,且所有
Age_POAF
列均为 99,那么我们移动到原始数据的第二行并创建 570 行

例如如下

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 dataframe reshape
1个回答
2
投票

您可以首先

uncount()
TOTAL
列来扩展数据集,然后使用简单的
ifelse
来分配正确的
POAF
值。

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
© www.soinside.com 2019 - 2024. All rights reserved.