如何在数据名称中组合稀疏列?

时间:2014-09-25 22:58:37

标签: r dataframe consolidation

我有一个R脚本,可以创建一个包含61列的数据框。 data.frame是通过将一堆csv文件读入data.frames列表,然后合并列表,使得列表中每个data.frame中的通常命名的列填充结果data.frame中的相同列。 / p>

应该合并的一些列在csv文件中命名不一致(例如date.received vs received.on.date vs date.sample.received),我想知道将它们组合起来的最佳方法是什么是

我有几个想法:

  • 在合并列表中的大型lapply之前重命名列。
  • 组合我拥有的列应该是相同的 data.frame,使得该行中具有值的列是 使用

是可能的第二种方法(以及如何?)还是有更好的方法?

1 个答案:

答案 0 :(得分:0)

第二种方法是可行的,使用rbind_all包中的dplyr可以轻松实现。方法如下:

首先,如果您有关于应该堆叠在一起的列名称模式的一些信息,我建议您在堆叠之前尝试修复它,例如:

colnames_synonymous <- c("date.received", "received.on.date", "date.sample.received")

list_of_dfs <- lapply(list_of_dfs, function(df) {
  names(df)[names(df) %in% colnames_synonymous] <- "date_received"
  return(df)
})

现在你很高兴:

dplyr::rbind_all(list_of_dfs)

在将所有列堆叠正确之前,您可能需要做一些调整,但现在,您需要做的就是更改lapply函数来执行此操作。我发现这比在rbinding之后进行一些列转换更容易。