我正在尝试在r中组合多个csv文件并且遇到了一个我无法解决的问题,即使我搜索过这个网站
基本上我使用函数来读取多个csv文件并使用reduce命令将它们合并
这不起作用,因为我收到以下错误:
match.names(clabs,names(xi))出错: 名称与以前的名称不匹配
所以我手动拿出了4个csvs,我想运行以查看是否可以解决这个问题,以下是这些4的代码:
dataframeA=read.csv("1.csv")
dataframeA <- subset(dataframeA, select = c(Name,Position))
dataframeB=read.csv("2.csv")
dataframeB <- subset(dataframeB, select = c(Name,Position))
dataframeC=read.csv("3.csv")
dataframeC <- subset(dataframeC, select = c(Name,Position))
dataframeD=read.csv("4.csv")
dataframeD <- subset(dataframeD, select = c(Name,Position))
prac=Reduce(function(x,y) merge(x,y,by="Name",all=TRUE), list(dataframeA, dataframeB, dataframeC, dataframeD))
我已经取出了每个csv文件的两个特定列(总共有3个列,但后面将使用第3列),还需要执行外连接
运行此代码时,我得到与以前相同的错误,因此我查找了原因,发现错误表明列名不相同。所以我在这4个数据帧之间产生了查询以查看
> identical(colnames(dataframeA),colnames(dataframeB))
[1] TRUE
> identical(colnames(dataframeA),colnames(dataframeC))
[1] TRUE
> identical(colnames(dataframeA),colnames(dataframeD))
[1] TRUE
正如您所看到的那样,这并没有带来任何问题,因为我的列名不同,所以我对如何解决这个问题感到茫然。
另外有趣的是只使用三个数据帧运行相同的命令(是的,它可以是三个数据帧中的任何一个)我没有得到任何错误,例如运行
prac=Reduce(function(x,y) merge(x,y,by="Name",all=TRUE), list(dataframeA, dataframeB, dataframeC))
完全没有错误我也可以为dataframeD而不是任何其他数据帧运行它,并让它运行。
我可能只是忽略了一些非常简单的事情,但我根本找不到错误
我很抱歉,如果这个不够清楚,这是我的第一篇stackoverflow帖子,通常只是寻找解决我遇到的任何问题的方法可以帮助我。
感谢您提前提供任何帮助
森