read.xlsx изменение содержимого при конвертации в .csv в R - PullRequest
0 голосов
/ 10 января 2020

Мне нужно преобразовать несколько файлов .xlsx в файлы csv, но содержимое исходного файла .xlsx изменяется во время преобразования.

Например, начальный файл Excel будет выглядеть следующим образом

   A  B  C  D
1 Foo
2
3           Foo

После преобразования файл .csv будет содержать это

   A  B  C  D
1 X1  X2 X3 X4
2 Foo NA NA NA
3 NA  NA NA NA          
4 Na  Na NA Foo

Как я могу преобразовать .xlsx без каких-либо изменений в содержимом? Я также читал, что у read.xlsx могут быть проблемы с датами. Есть ли простой способ конвертировать .xlsx в CSV?

Вот код, который я использую.

 PathOut<-"C:/Users/Desktop/New folder/"

  require(openxlsx)
  file_list<-list.files(path = PathOut, pattern='\\.xlsx$')

  x=0
  for (file in file_list) {
    setwd("C:/Users/Desktop/New folder/")
    x<-x+1
    file.xl <- read.xlsx(file,skipEmptyRows = FALSE,skipEmptyCols = FALSE,colNames = FALSE,rowNames = FALSE)
    newname<-paste0(tools::file_path_sans_ext(file),'_',LETTERS[x],'.csv')
    write.csv(file.xl, paste(PathOut,newname),row.names = FALSE)
  }

Спасибо

1 Ответ

0 голосов
/ 10 января 2020

Поменяйте местами использование write.csv на write.table, чтобы можно было использовать аргумент col.names = FALSE. Это остановит появление строки X1 X2 X3 X4. См. этот ТАК вопрос для получения дополнительной помощи.

require(openxlsx)

PathOut <- getwd()

file_list <- list.files(path = PathOut, pattern = '\\.xlsx$')

x <- 0
for (file in file_list) {
    x <- x+1
    file.xl <- read.xlsx(file, skipEmptyRows = FALSE, skipEmptyCols = FALSE, colNames = FALSE, rowNames = FALSE)
    newname <- paste0(tools::file_path_sans_ext(file),'_',LETTERS[x],'.csv')
    write.table(file.xl, paste0(PathOut, "/", newname), row.names = FALSE, col.names = FALSE)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...