[問題] 多個xlsx併檔問題

作者: kakaman (日子過的真快阿)   2022-05-25 02:46:48
各位好,
有併檔問題想要請較@@
我有16個資料筆數很多的xlsx檔
想利用R併成一個大檔
首先就是多次讀入這16個檔,接著再把這16個檔合併
Code如下:
library(openxlsx)
library(dplyr)
path <- "C:/Users/xxxx/Documents/R_"
files <- list.files(path, pattern = "*.xlsx$", full.names = TRUE)
dat <- list()
for(i in 1:length(files)){
dat <- c(dat, list(read.xlsx(files[[i]], colNames = TRUE)))
}
DF <- rbind(dat[[1]], dat[[2]],........dat[[16]])
但是覺得這樣好像很繁瑣...
網路上爬文發現有使用map_dfr
嘗試一下
files <- list.files("C:/Users/xxxx/Documents/R", pattern = "*.xlsx$",
full.names = TRUE)
DF <- map_dfr(files, read.xlsx)
但會跑出以下錯誤訊息:
Error in `dplyr::bind_rows()`:
! Can't combine `..1$7.計畫日` <double> and `..2$7.計畫日` <character>.
Run `rlang::last_error()` to see where the error occurred.
百思不得其解這著錯誤原因...是否代表我要將這16個檔的計劃日格式都弄成一樣...
作者: joshddd (joshddd)   2022-05-25 03:53:00
第一個方法可以嗎?如果可以DF <- do.call(rbind, dat)dat <- lapply(files, function(url)read.xlsx (url, colNames = T))然後報錯的原因 就 有的檔案是 char type 有的是 doubletype在計劃日那個column第二個方法會錯 可能是因為 套件試圖解決原生dataframe太慢 所以都會把column 的type 固定增加速度的樣子
作者: lycantrope (阿寬)   2022-05-25 19:14:00
作者: hohiyan (海洋)   2022-05-25 22:49:00
另一個用map跟readxl的方法。readxl可以指定欄位格式https://pastebin.com/Edg27cPy

Links booklink

Contact Us: admin [ a t ] ucptt.com