Как объединить столбцы с разными строками с помощью R - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть несколько файлов Excel, и мне нужно объединить четвертый столбец каждой таблицы. Однако строки таблицы различны. У некоторых из них есть 7 рядов, но у некоторых есть 5 или 6 рядов. Вот мои описания данных.

enter image description here

Как видите, есть три файла 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)
}

Может кто-нибудь помочь мне объединить эти столбцы с разными строками?

1 Ответ

0 голосов
/ 11 апреля 2019

Я изменил способ инициализации 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...