R按列名读取excel
所以我有一堆excel文件,我想循环读取特定的,不连续的列到数据框中。 使用readxl
工作的基本的东西是这样的:
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
因为它会col_types
其中的一些(例如,对于string列,如果第一个值以数字开始,它会尝试将整列解释为数字,并崩溃)。 所以我的问题是:如何指定特定的,不连续的列读取? range
参数使用不允许读取不连续列的cell_ranger
软件包。 那么还有其他什么
openxlsx
软件包中的read.xlsx
函数具有一个参数cols
,它带有一个数字索引,用于指定要读取的列。
如果至less有一列是字符,它似乎将所有列读作字符。
编辑:对于.xls文件,请参阅XLConnect
包。 想到安装rJava
可能会很棘手。 readWorksheet()
的keep
和drop
参数也接受列名称。 参数colTypes
处理列types。 这样它适用于我:
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))