[问题] 多个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