R语言导入EXCEL数据

之前最常用的方法是 把excel转换成csv txt文件 然后用 read.csv 或是 fread读入。

今天找了好多包来快速读取数量量比较大的excel包,但是总是出现OutOfMemoryError (Java): GC overhead limit exceeded,内存溢出报错。找到了两个R包可以解决该问题

目前找到三个包可以读取excel数据。

1 ,读取excel文件的包:xlsx包  只能读取".xlsx"格式的包

install.packages("xlsx")

library(xlsx)

read.xlsx(file, sheetIndex, sheetName=NULL, rowIndex=NULL,
startRow=NULL, endRow=NULL, colIndex=NULL,
as.data.frame=TRUE, header=TRUE, colClasses=NA,
keepFormulas=FALSE, encoding="unknown", ...)

这个包只能读取数据量不大的excel数据

2,XLConnect包

library("XLConnectJars")
library("XLConnect")

##连接excel文件

connect<-loadWorkbook("E:\\wang\\1.xlsx")

#读取,A为Sheet名
readWorksheet (connect, 'A' )
此包只能读取数据量不大的excel数据
 
前面两个包可以在R的很多版本里面都可以用
 
3,readxl包   下载该包需要用R版本R version 3.2.5才能用,低于该版本的不能够使用
install.packages("readxl")

library(readxl)
 x<-read_excel("E:\\wang\\1.xlsx")还可以读取“xls”的excel文件,

其他参数可以自己查询  ?read_excel()

此函数可以快速读取excel的大量数据,且不会出现以上的内存溢出错误

#把每个sheet名生成一个向量

sheetNum <- as.vector(excel_sheets(".xlsx"))

#导入全部数据
data <- vector()
for(i in sheetNum){
  foo_data <- read_excel("123.xlsx", sheet = i, col_names = T)
  data <- rbind(data, foo_data)
}

 

4,openxlsx包

该包也能够读取大量的excel文件而不会出现内存溢出的错误,且该包可以在低版本的R中使用

install.packages("openxlsx")

library(openxlsx)

x<-read.xlsx("E:\\wang\\1.xlsx",1)

read.xlsx(xlsxFile, sheet = 1, startRow = 1, colNames = TRUE,
skipEmptyRows = TRUE, rowNames = FALSE, detectDates = FALSE,
rows = NULL, cols = NULL)

 

5. gdata包

install.packages("gdata")

library(gdata)

x <- read.xls ( "E:\\wang\\1.xlsx")

貌似此包 只可以导csv tsv tab 格式的数据。

注意:在安装好xlsx包之后,在安装XLConnect包时可能会出现错误,由于xlsx可能把有些XLConnect包中的函数给屏蔽掉了,此时需要移除xlsx包,remove.packages("xlsx")即可


你可能感兴趣的:(R软件学习)