我有几个Excel文件,需要合并每个表的第四列。但是,表的行是不同的。其中一些具有7行,但其中一些具有5或6行。这是我的数据描述。
如您所见,有三个excel文件,我需要合并第四列。其中一个具有7行,而另外两个具有5和6行。我尝试使用循环读取文件夹中的所有文件,然后使用“合并”执行此操作。
这是我的代码。
rm(list=ls())
updir = "D:/STAR/MergeResults/Rtest"
library(readxl)
setwd(updir) #set up the working dictionary
outfile <- "" #first define an empty variable
file_list <- list.files(pattern = NULL)
for (i in 1:length(file_list)) {
file <- read_excel(file_list[i],col_names = TRUE)
variable <- file[,4]
outfile <-merge(outfile,variable)
}
有人可以帮助我将这些列与不同的行合并吗?
答案 0 :(得分:0)
我更改了outfile
的初始化方式,使其为空向量。您可以使用c()
函数组合向量。您的其余代码可以保持不变。
cols <- apply(file_list,function(x) {
read_excel(file_list[i],col_names = TRUE)[,4]
})
max_length <- max(sapply(cols,length))
outfile <- data.frame(x = 1:max_length)
for(v in cols) {
vmod <- c(v,rep(NA,max_length - length(v)))
outfile <- cbind(outfile,vmod)
}
outfile <- outfile[,-1]
写入excel:
library(openxlsx)
write.xlsx(outfile, file = "NewFile.xlsx", colNames = TRUE,rowNames = FALSE)