我有研究级别的荟萃分析数据,我希望将其reshape /转换为患者级别的数据

以下是我的数据示例

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行(病例总数),所有这些行在Study列和POAF列中都被标记为‘Creswell,1993’,在POAF中的第一个1378(患有POAF的病例数)应该被标记为Yes1,而其余的为No0,并且所有这些行都有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
...      ...    ....   ...   ....

推荐答案

您可以首先将TOTAL列设置为uncount()以展开数据集,然后使用简单的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

R相关问答推荐

将带有范围的字符串转换为R中的数字载体

在通过最大似然估计将ODE模型与数据匹配时,为什么要匹配实际参数的转换值?

如何在R中正确对齐放射状图中的文本

如何使用shinyChatR包配置聊天机器人

如果列中存在相同的字符串,则对行值进行总和

使用tidy—select创建一个新的带有mutate的摘要变量

根据多个条件增加y轴高度以适应geom_text标签

如何根据嵌套元素的名称高效而优雅地确定它属于哪个列表?

用约翰逊分布进行均值比较

展开对数比例绘图的轴(添加填充)

如何将Which()函数用于管道%>;%

如何使用FormC使简单算术运算得到的数字是正确的?

R中时间间隔的大向量与参考时间间隔的相交

如何预测原始数据集并将值添加到原始数据集中

需要一个函数来在第一行创建一个新变量,然后用新变量替换一个不同的变量(对于多行)

R:使用ApexCharge更改标签在饼图中的位置

条形图中的条形图没有try 赋予它们的 colored颜色

是什么打破了此Quarto仪表板中的工具提示?

从单个html段落中提取键-值对

只有当我在循环的末尾放置一条print语句时,Foreach才会给出预期的输出