Importing Excel files into R, xlsx or xls Importing Excel files into R, xlsx or xls r r

Importing Excel files into R, xlsx or xls


For a solution that is free of fiddly external dependencies*, there is now readxl:

The readxl package makes it easy to get data out of Excel and into R. Compared to many of the existing packages (e.g. gdata, xlsx, xlsReadWrite) readxl has no external dependencies so it's easy to install and use on all operating systems. It is designed to work with tabular data stored in a single sheet.

Readxl supports both the legacy .xls format and the modern xml-based .xlsx format. .xls support is made possible the with libxls C library, which abstracts away many of the complexities of the underlying binary format. To parse .xlsx, we use the RapidXML C++ library.

It can be installed like so:

install.packages("readxl") # CRAN version

or

devtools::install_github("hadley/readxl") # development version

Usage

library(readxl)# read_excel reads both xls and xlsx filesread_excel("my-old-spreadsheet.xls")read_excel("my-new-spreadsheet.xlsx")# Specify sheet with a number or nameread_excel("my-spreadsheet.xls", sheet = "data")read_excel("my-spreadsheet.xls", sheet = 2)# If NAs are represented by something other than blank cells,# set the na argumentread_excel("my-spreadsheet.xls", na = "NA")

* not strictly true, it requires the Rcpp package, which in turn requires Rtools (for Windows) or Xcode (for OSX), which are dependencies external to R. But they don't require any fiddling with paths, etc., so that's an advantage over Java and Perl dependencies.

Update There is now the rexcel package. This promises to get Excel formatting, functions and many other kinds of information from the Excel file and into R.


You may also want to try the XLConnect package. I've had better luck with it than xlsx (plus it can read .xls files too).

library(XLConnect)theData <- readWorksheet(loadWorkbook("C:/AB_DNA_Tag_Numbers.xlsx"),sheet=1)

also, if you are having trouble with your file not being found, try selecting it with file.choose().


I would definitely try the read.xls function in the gdata package, which is considerably more mature than the xlsx package. It may require Perl ...