R 在目录中合并多个数据帧
我想在一个目录中合并多个数据帧。其中一些数据帧具有重复的行。所有数据帧都具有相同的列信息 我在下面的代码中找到了代码,但是,我不知道如何修改它,以便重复的行不会导致错误 我得到以下响应:R 在目录中合并多个数据帧,r,R,我想在一个目录中合并多个数据帧。其中一些数据帧具有重复的行。所有数据帧都具有相同的列信息 我在下面的代码中找到了代码,但是,我不知道如何修改它,以便重复的行不会导致错误 我得到以下响应:read.table中出现错误(file=file,header=header,sep=sep,quote=quote,不允许重复“行.名称” 下面是从一个目录中读取多个数据帧的代码。如何修改它以避免重复行问题 multmerge = function(mypath){ filenames=list.file
read.table中出现错误(file=file,header=header,sep=sep,quote=quote,不允许重复“行.名称”
下面是从一个目录中读取多个数据帧的代码。如何修改它以避免重复行问题
multmerge = function(mypath){
filenames=list.files(path=mypath, full.names=TRUE)
datalist = lapply(filenames, function(x){read.csv(file=x,header=T)})
Reduce(function(x,y) {merge(x,y)}, datalist)}
mymergeddata <- multmerge("/Users/Danielle/Desktop/Working
Directory/Ecuador/datasets to merge")
multmerge=函数(mypath){
filenames=list.files(path=mypath,full.names=TRUE)
datalist=lappy(文件名,函数(x){read.csv(文件=x,头=T)})
Reduce(函数(x,y){merge(x,y)},datalist)}
mymergeddata问题
问题不在于合并,而在于一个或多个单独的csv
中存在重复的行名称。本质上,如果您试图对包含重复行名称的文件执行简单的read.csv()
,您将遇到以下错误:
read.table(file=file,header=header,sep=sep,quote)中出错=
引号,:不允许重复的“行.名称”
解决方案
那么,您如何规避它呢?您可以修复单个csv,这可能比在该目录中设置20个csv听起来更具挑战性。在这种情况下,我建议您在读取过程中不要使用行名称,如果确实有必要,则在读取操作完成后设置行名称。例如乐:
multmerge = function(mypath){
filenames=list.files(path=mypath, full.names=TRUE)
datalist = lapply(filenames, function(x){read.csv(file=x,header=T, row.names = NULL)})
Reduce(function(x,y) {rbind(x,y)}, datalist)}
mymergeddata <- multmerge("~/Desktop")
mymergeddata[mymergeddata$Day.Index == "2014-01-07",]
Day.Index Sessions year
1 2014-01-07 57 2014
1091 2014-01-07 57 2014
琐碎的
我正在使用rbind()
按行追加,但您可以将其替换为merge()
,答案仍然正确
本质上:R要求其数据帧的行名称是唯一的。请向我们展示数据帧的示例。此外,您确定要合并或追加吗?
multmerge = function(mypath){
filenames=list.files(path=mypath, full.names=TRUE)
datalist = lapply(filenames, function(x){read.csv(file=x,header=T, row.names = 1)})
Reduce(function(x,y) {rbind(x,y)}, datalist)}
mymergeddata <- multmerge("~/Desktop")
nrow(mymergeddata)
> Error in read.table(file = file, header = header,
sep = sep, quote = quote, : duplicate 'row.names' are not allowed