微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Rbind函数rbind三个数据库

如何解决使用Rbind函数rbind三个数据库

我知道这是一个新手问题,我有这 3 个 xlsx 文件,其中包含 3 个相同 14 个变量的三个数据库,它是一个横截面数据面板, 我想要的只是将它们连接到一个名为 eplt数据库中, 首先,我导入它们

library(dplyr)
library(ggplot2)
library(xlsx)
##Import the three data bases

epl_data<-read.xlsx("Notes_ETAB2016-2017.xlsx",sheetIndex = 1,header = TRUE)
epl_data2<-read.xlsx("Notes_ETAB2017-2018.xlsx",header = TRUE)
epl_data3<-read.xlsx("Notes_ETAB2018-2019.xlsx",header = TRUE)
## to render the number of rows in each of them
nrow(epl_data)
nrow(epl_data2)
nrow(epl_data3)
# I want to rbind the three sets together  

eplt<-rbind(epl_data,epl_data2,epl_data3)

总行数为 29441,但是当应用 Rbind 将它们全部绑定在一起时,我得到错误

> eplt<-rbind(epl_data,epl_data3)
Error in match.names(clabs,names(xi)) : 
  names do not match prevIoUs names

但是3组变量的名字是一样的

enter image description here

有人可以帮忙吗,我只想重新绑定 25000 个观察值,剩下的 4441 个将其与多元回归模型的可预测 obs 进行比较, 提前致谢

解决方法

第三个数据帧的名称与前两个不同:Svt 不是大写。

一种方法是将一个数据帧的名称应用于其他数据帧:

colnames(epl_data2) <- colnames(epl_data)
colnames(epl_data3) <- colnames(epl_data)

但每当您的数据来自 Excel 文件时,我都会推荐包 janitor。事实上,变量名问题很常见。此包可确保您的数据列名称格式正确:

epl_data <- janitor::clean_names(epl_data)
epl_data2 <- janitor::clean_names(epl_data2)
epl_data3 <- janitor::clean_names(epl_data3)

因此,rbind 应该可以工作

,

如前所述,您的变量名称 'SVT' 不匹配。这是一种替代方法,可以使列名小写并将它们绑定到一个数据框中。

library(dplyr)
library(purrr)

eplt <- list.files(pattern = 'Notes_ETAB2016-\\d+\\.xlsx') %>%
  map_df(~readxl::read_excel(.x) %>% rename_with(~tolower(.)))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。