我有一个数据框列表,每个数据框都以患者ID命名。
df.list <- (1297, 2468, 3323, 4453, 4785, 6489, 7338, 8244, 9345, etc.)
每个数据框都有这样的数据(这是非常简化的,但它得到了重点):
A B C D
1 8 4 2
3 4 6 8
我想合并列表中的所有数据框,以便所有A值都在一列中,所有B值都在另一列中,等等。
但是,我还想添加一个新列,告诉我这些数据来自哪个患者。因此,我想提取数据框的名称(患者ID),该特定行中的数据来自该数据框,并将此值添加到合并数据框中的新列。我计划使用rbind合并它,但我不知道如何添加另一个包含患者ID信息的列。
目标是在最终数据框中包含以下信息:
A B C D Patient ID
感谢任何帮助!
谢谢!
答案 0 :(得分:1)
使用下面的注释中以可再现形式显示的输入数据,将rbind
数据帧放在一起。行名称将包含ID后跟一个后缀,表示行号,以便我们可以获得所需的数据框df2
,如下所示:
df2 <- do.call("rbind", mget(df.list))
df2$id <- sub("[.].*", "", rownames(df2))
rownames(df2) <- NULL
注意:我们假设此输入数据:
df.list <- c(1297, 2468, 3323, 4453, 4785, 6489, 7338, 8244, 9345)
df.list <- as.character(df.list)
Lines <- "A B C D
1 8 4 2
3 4 6 8"
df <- read.table(text = Lines, header = TRUE)
for(nm in df.list) assign(nm, df)