首页 文章

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

提问于
浏览
0

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

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

我有几个想法:

  • 重命名列,然后在列表中合并一个大的lapply .
    我拥有data.frame后,
  • 组合应该相同的列,以便使用该行中具有值的列

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

1 回答

  • 0

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

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

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

相关问题