看板 R_Language 關於我們 聯絡資訊
各位好, 有併檔問題想要請較@@ 我有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個檔的計劃日格式都弄成一樣... -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.176.212.49 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1653418010.A.66D.html ※ 編輯: kakaman (111.71.46.57 臺灣), 05/25/2022 02:53:10 ※ 編輯: kakaman (111.71.46.57 臺灣), 05/25/2022 02:54:25 ※ 編輯: kakaman (111.71.46.57 臺灣), 05/25/2022 02:55:40
joshddd: 第一個方法可以嗎? 05/25 03:53
joshddd: 如果可以 05/25 03:54
joshddd: DF <- do.call(rbind, dat) 05/25 03:54
joshddd: dat <- lapply(files, function(url) 05/25 03:59
joshddd: read.xlsx (url, colNames = T)) 05/25 03:59
joshddd: 然後報錯的原因 就 有的檔案是 char type 有的是 double 05/25 04:01
joshddd: type 05/25 04:01
joshddd: 在計劃日那個column 05/25 04:03
joshddd: 第二個方法會錯 可能是因為 套件試圖解決原生dataframe 05/25 04:05
joshddd: 太慢 所以都會把column 的type 固定增加速度的樣子 05/25 04:05
lycantrope: https://reurl.cc/ane53G 05/25 19:14
hohiyan: 另一個用map跟readxl的方法。readxl可以指定欄位格式 05/25 22:49
hohiyan: https://pastebin.com/Edg27cPy 05/25 22:49