如何在 r 中加载和合并多个 .csv 文件?

Posted

技术标签:

【中文标题】如何在 r 中加载和合并多个 .csv 文件?【英文标题】:How to load and merge multiple .csv files in r? 【发布时间】: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 文件,对吗?如果是这样,请编辑您的问题,因为它将对后代有用:) 【参考方案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 的函数来迭代地对您的数据列表应用合并来解决这个问题。我认为没有比这里介绍的功能更简洁的方式来完成这项任务了。

以上是关于如何在 r 中加载和合并多个 .csv 文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Boot 中加载和遍历属性文件

如何在 Spark Scala 作业中加载和写入属性文件?

如何把多个CSV文件的数据变成一个EXCEL表格

在 Python 3.4 中加载和读取具有多个 JSON 对象的 JSON 文件

如何在 R 中加入来自 2 个不同 csv 文件的数据?

如何在 OpenGL 中加载和渲染可能包含三角形、四边形或 N-Gons 的 OBJ 文件?