R按列名读取excel
问题描述:
所以我有一堆excel文件我想循环读取特定的不连续的列到数据框中。使用readxl
作品像这样的基本的东西:R按列名读取excel
library(readxl)
library(plyr)
wb <- list.files(pattern = "*.xls")
dflist <- list()
for (i in wb){
dflist[[i]] <- data.frame(read_excel(i, sheet = "SheetName", skip=3, col_names = TRUE))
}
# now put them into a data frame
data <- ldply(dflist, data.frame, .id = NULL)
这工作(勉强),但问题是我的Excel文件有大约114列,我只希望特定的人。我也不想让R
猜测col_types
,因为它会混淆它们中的一些(例如,对于字符串列,如果第一个值以数字开头,它会尝试将整列解释为数字,并且崩溃)。所以我的问题是:如何指定特定的不连续列来读取? range
参数使用cell_ranger
包,该包不允许读取不连续的列。那么任何替代方案
答
从openxlsx
包中的read.xlsx
函数具有参数cols
即采用指定读取哪些列数字索引。
如果至少有一列是字符,它似乎会将所有列读作字符。
编辑:对于.xls文件,请参阅XLConnect
包。想到安装rJava
可能会很棘手。 keep
和drop
参数readWorksheet()
也接受列名称。参数colTypes
处理列类型。这样,它为我的作品:
options(java.home = "C:\\Program Files\\Java\\jdk1.8.0_74\\")
library(rJava)
library(XLConnect)
workbook <- loadWorkbook("test.xls")
readWorksheet(workbook, sheet = "Sheet0", keep = c(1,2,5))
是否有可能为你的Excel文件保存为从他们的CSV文件并导入? – user1945827
我有超过100个,每个有多个表...所以...不:) – Alex