我有几个excel文件,需要合并每个表的第四列。但是,表中的行是不同的。其中一些有7行,但有些有5或6行。以下是我的数据描述。
如您所见,有三个excel文件,我需要合并第四列。其中一个有7行,而另外两个有5行和6行。我尝试使用一个循环来读取文件夹中的所有文件,然后使用"merge“来完成此操作。
这是我的代码。
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)
}
有人能帮我合并这些不同行的列吗?
发布于 2019-04-11 07:13:07
我更改了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)
https://stackoverflow.com/questions/55621922
复制相似问题