【问题标题】:Adding name of individual data frame to new column in merged data frame将单个数据框的名称添加到合并数据框中的新列
【发布时间】:2017-08-21 22:00:22
【问题描述】:

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

感谢任何帮助!

谢谢!

【问题讨论】:

  • 数据结构如何?您是否有数据框列表,并且名称中包含患者 ID?
  • @lebelinoz 是的,就是这样!每个数据帧中有可变数量的行被合并到更大的数据帧中,所以在新的数据帧中,我想要单个数据行来自的患者 ID。

标签: r


【解决方案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)

【讨论】:

    猜你喜欢
    • 2019-10-31
    • 2021-10-20
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多