Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 在目录中合并多个数据帧_R - Fatal编程技术网

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