问题描述
我知道这是一个新手问题,我有这 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组变量的名字是一样的 有人可以帮忙吗,我只想重新绑定 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(.)))