将单个数据帧的名称添加到合并数据帧中的新列

时间:2017-08-21 22:00:23

标签: r

我有一个数据框列表,每个数据框都以患者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

感谢任何帮助!

谢谢!

1 个答案:

答案 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)