【问题标题】:How to load and merge multiple .csv files in r?如何在 r 中加载和合并多个 .csv 文件?
【发布时间】:2017-10-07 02:14:53
【问题描述】:

所以我是 R 的新手,现在我正在尝试加载多个 .csv 文件(约 60 个),然后将它们合并在一起。它们都有相似的列,它们的文件命名如下:dem_file_30, dem_file_31。

我一直在尝试使用在线脚本,但总是遇到一些错误。我确信我可以手动完成,但这真的很乏味。

例子:

file_list <- list.files("/home/sjclark/demographics/")   
list_of_files <- lapply(file_list, read.csv)  
m1 <- merge_all(list_of_files, all=TRUE)
Error: merge_all doesn't exist

这似乎将它们读入R,但是在那之后我不知道该怎么办...帮助?

setwd("/home/sjclark/demographics/")
filenames <- list.files(full.names=TRUE)  
All <- lapply(filenames,function(i){
read.csv(i, header=TRUE)
})

【问题讨论】:

  • merge_all 可能不是基础 R 中的函数。它来自哪里?
  • 是来自 reshape 包吗?如果是这样,请安装并加载包。
  • 因为它已在 cmets 中被指出,也许您不想 merge(在 R 中它是 SQL 等效的 join)但是concatenateappend 文件,对吗?如果是这样,请编辑您的问题,因为它将对后代有用:)

标签: r csv merge


【解决方案1】:

我刚刚做了一个非常相似的任务,并且想知道是否有更快/更好的方法来使用dplyrbind_rows

我的这个任务的代码是使用来自plyrldply

library(plyr)    
filenames <- list.files(path = "mypath", pattern = "*", full.names=TRUE)
import.list <- ldply(filenames, read.csv)

希望有帮助

罗里

【讨论】:

  • 所以 OP 需要 append 不合并?语义非常重要。
  • @JulietR 如果您对这个答案感到满意,请您接受/投赞成票
  • 是的!投了赞成票,但由于我对这个网站很陌生,它可能不会公开显示。
【解决方案2】:

看来您可能正在尝试使用 R-bloggers (credit to Tony Cookson) 上共享的 nice 功能:

multMerge = function(mypath){
  filenames = list.files(path = mypath, full.names = TRUE)
  datalist = lapply(filenames, 
                    function(x){read.csv(file = x,
                                         header = TRUE,
                                         stringsAsFactors = FALSE)})
  Reduce(function(x,y) {merge(x, y, all = TRUE)}, datalist)
}

或者也许你已经从不同的来源拼凑起来?无论如何,merge 是您缺少的关键基本 R 函数。 merge_all 不存在于任何包中。

由于您是 R 新手(也许是所有编程新手),因此值得注意的是,您需要在使用它之前定义该函数。完成后,您可以像调用任何其他函数一样调用它:

my_data <- multMerge("/home/sjclark/demographics/")

【讨论】:

  • 当我用“merge”而不是“merge all”插入它时,我得到这个:as.data.frame(y) 中的错误:缺少参数“y”,没有默认值跨度>
  • 正如博文所解释的,merge 一次只对两个对象进行操作。我刚刚分享的函数通过使用另一个名为 Reduce 的函数来迭代地对您的数据列表应用合并来解决这个问题。我认为没有比这里介绍的功能更简洁的方式来完成这项任务了。
猜你喜欢
  • 2014-01-07
  • 1970-01-01
  • 2012-04-29
  • 1970-01-01
  • 2022-06-22
  • 1970-01-01
  • 2019-12-27
  • 2015-07-26
  • 1970-01-01
相关资源
最近更新 更多