我有研究级别的荟萃分析数据,我想将其重塑/转换为患者级别的数据
这是我的数据样本
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
... ... .... ... ....
您可以首先
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