我有一个 Dataframe 的列表。我想通过索引列cbind
来cbind
它们。每个表都有相同的列标题,所以我不能只是cbind它们,否则我将不知道列来自哪个列表项。列表项的名称给出了用于生成它们的度量,所以我想用列表项名称作为列标题的后缀。
以下是简化的 Dataframe 演示列表:
list_of_tables <- list(number = structure(list(sample_id = structure(1:3, levels = c("CSF_1",
"CSF_2", "CSF_4"), class = "factor"), total = c(655, 331, 271
), max = c(12, 5, 7)), row.names = c(NA, -3L), class = c("tbl_df",
"tbl", "data.frame")), concentration_cm_3 = structure(list(sample_id = structure(1:3, levels = c("CSF_1",
"CSF_2", "CSF_4"), class = "factor"), total = c(121454697, 90959097,
43080697), max = c(2050000, 2140000, 915500)), row.names = c(NA,
-3L), class = c("tbl_df", "tbl", "data.frame")), volume_nm_3 = structure(list(
sample_id = structure(1:3, levels = c("CSF_1", "CSF_2", "CSF_4"
), class = "factor"), total = c(2412783009, 1293649395, 438426087
), max = c(103500000, 117400000, 23920000)), row.names = c(NA,
-3L), class = c("tbl_df", "tbl", "data.frame")), area_nm_2 = structure(list(
sample_id = structure(1:3, levels = c("CSF_1", "CSF_2", "CSF_4"
), class = "factor"), total = c(15259297.4, 7655352.2, 3775922
), max = c(266500, 289900, 100400)), row.names = c(NA, -3L
), class = c("tbl_df", "tbl", "data.frame")))
您将看到这是一个包含4个表的列表,列表项名称为“number”、“concentration_cm_3”、“volume_nm_3”和“area_nm_2”。
使用plyr
中的join_all
,我可以通过sample_id
将它们合并。但是,如何添加列表项名称的后缀?
merged_tables <- plyr::join_all(stats_by_measure, by = "sample_id", type = "left")
2条答案
按热度按时间dxxyhpgq1#
我们可以这样做:诀窍是在
bind_rows
中使用.id = 'id'
,它将名称添加为一列,然后我们可以透视:u5rb5r592#
可能,我们可以在这里使用
reduce2
以及left_join
中的suffix
选项或者,如果我们想使用
join_all
,也许可以在连接之前重命名列或者使用
for
循环