作者kakaman (日子过的真快阿)
看板R_Language
标题[问题] 多个xlsx并档问题
时间Wed May 25 02:46:48 2022
各位好,
有并档问题想要请较@@
我有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://webptt.com/cn.aspx?n=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
1F:推 joshddd: 第一个方法可以吗? 05/25 03:53
2F:→ joshddd: 如果可以 05/25 03:54
3F:→ joshddd: DF <- do.call(rbind, dat) 05/25 03:54
4F:推 joshddd: dat <- lapply(files, function(url) 05/25 03:59
5F:→ joshddd: read.xlsx (url, colNames = T)) 05/25 03:59
6F:→ joshddd: 然後报错的原因 就 有的档案是 char type 有的是 double 05/25 04:01
7F:→ joshddd: type 05/25 04:01
8F:推 joshddd: 在计划日那个column 05/25 04:03
9F:→ joshddd: 第二个方法会错 可能是因为 套件试图解决原生dataframe 05/25 04:05
10F:→ joshddd: 太慢 所以都会把column 的type 固定增加速度的样子 05/25 04:05
12F:推 hohiyan: 另一个用map跟readxl的方法。readxl可以指定栏位格式 05/25 22:49