r - 合并目录中的多个数据框
问题描述
我想在一个目录中合并多个数据框。其中一些数据框有重复的行。所有数据框都具有相同的列信息。
我在下面的网站上找到了下面的代码,但是我不知道如何修改它,以便重复的行不会导致错误。
我收到以下回复:Error in read.table(file = file, header = header, sep = sep, quote = quote, duplicate 'row.names' are not allowed
这是从单个目录中读取多个数据帧的代码。如何修改它以规避重复行问题?
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")
解决方案
问题
问题不在于合并,而在于您有重复行名的一个或多个个体。csv
本质上,如果您尝试对read.csv()
包含重复行名的文件执行简单操作,您将得到这个确切的错误:
read.table 中的错误(file = file,header = header,sep = sep,quote = quote,:不允许重复的'row.names'
解决方案
那么如何规避呢?您可以修复单个 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
看?中的两个完全相同的值,Day.Index
但因为它们不是行名,所以不会出错。如果您已更改代码以使用第一列 ( Day.Index
) 作为行名(通过指定row.names=1
),那么我将能够复制您的错误:
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
我用来逐行rbind()
追加的微不足道,但你可以用merge()
就地交换它,答案仍然是正确的。
本质上:R 要求其数据框的行名是唯一的。
推荐阅读
- c - 使用 #define 创建与 C89 std 兼容的虚拟记录
- android-studio -
模拟器已启动但未被 android studio 检测到 - vbscript - 启动外部 exe 并设置超时 VBS
- java - Spring:作用域字段
- javascript - 为什么我的 json 返回 false?
- plotly - jupyterlab/plotly-extension 不会安装
- git - 如何在不克隆容器 git repo 的情况下获取 git 子模块的 git SHA1
- tensorflow - 如何知道从 Graph 中的张量名称列表中选择哪个张量?
- apache - 控制 HDFS 复制、映射器编号和减速器识别
- html - Accordion Dropdown 没有正确设置动画