0

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

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

我有几个想法:

  • 在合并列表之前重命名列。
  • 一旦我有我的data.frame,组合应该相同的列,以便使用在该行中具有值的列

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

4

1 回答 1

0

第二种方法是可能的,并且使用rbind_allfrom dplyrpackage 很容易。方法如下:

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

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 之后进行一些列转换更容易。

于 2014-09-26T02:22:28.557 回答