将Excel文件导入到R,xlsx或xls中

请有人可以帮助我最好的方式导入一个Excel 2007(.xlsx)文件到R.我已经尝试了几种方法,似乎没有工作。 我已经升级到2.13.1,Windows XP,xlsx 0.3.0,我不知道为什么错误不断出现。 我试过了:

AB<-read.xlsx("C:/AB_DNA_Tag_Numbers.xlsx","DNA_Tag_Numbers") 

要么

 AB<-read.xlsx("C:/AB_DNA_Tag_Numbers.xlsx",1) 

但我得到的错误:

  Error in .jnew("java/io/FileInputStream", file) : java.io.FileNotFoundException: C:\AB_DNA_Tag_Numbers.xlsx (The system cannot find the file specified) 

谢谢。

对于免费的外部依赖*的解决scheme,现在有readxl

readxl软件包可以很容易地将数据从Excel中导出并导入到R中。与许多现有软件包(例如gdata,xlsx,xlsReadWrite)相比,readxl没有外部依赖关系,所以在所有操作系统上安装和使用都很简单。 它被devise用来处理存储在一个表格中的表格数据。

Readxl支持传统的.xls格式和现代基于xml的.xlsx格式。 .xls支持使得libxls C库成为可能,这个库抽象出了底层二进制格式的许多复杂性。 为了parsing.xlsx,我们使用RapidXML C ++库。

它可以像这样安装:

 install.packages("readxl") # CRAN version 

要么

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

用法

 library(readxl) # read_excel reads both xls and xlsx files read_excel("my-old-spreadsheet.xls") read_excel("my-new-spreadsheet.xlsx") # Specify sheet with a number or name read_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 argument read_excel("my-spreadsheet.xls", na = "NA") 

*不完全正确,它需要Rcpp包 ,而Rcpp包需要Rtools(用于Windows)或Xcode(用于OSX),这是R的外部依赖关系。但是,它们不需要任何path的摆弄等,比Java和Perl依赖关系更具优势。

更新现在有rexcel包。 这承诺从Excel文件中获取Excel格式,函数和许多其他types的信息,并将其转换为R.

您可能还想要尝试XLConnect包。 我已经比xlsx好运了(另外它也可以读取.xls文件)。

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

另外,如果您在找不到文件时遇到问题,请尝试使用file.choose()进行select。

我肯定会尝试gdata包中的read.xls函数,它比xlsx包更成熟。 它可能需要Perl …

更新

由于下面的答案现在有点过时了,我只是提请注意readxl包。 如果Excel表格格式良好,则可以使用readxl从工作簿中读取。 如果表单格式不正确,则仍然会导出为CSV,然后通过read.csv()或普通的readLines()处理R中的问题。

原版的

我最喜欢的方法是将各个Excel工作表保存为逗号分隔值(CSV)文件。 在Windows上,这些文件与Excel相关联,因此您不会丢失双击打开的Excel“function”。

可以使用read.csv()将CSV文件读入R,或者如果您位于某个位置或使用一些使用欧洲设置(其中,用作小数点位置)的计算机,则使用read.csv()将其读入到R中。

这些function具有合理的默认设置,使读取适当格式的文件变得简单。 只要保留第一行或第一列的样本或variables的标签。

以CSV格式存储文件的好处在于,由于文件是纯文本文件,因此可以非常方便地传递文件,您可以确信它们可以在任何地方打开; 一个不需要Excel来查看或编辑数据。

示例2012:

 library("xlsx") FirstTable <- read.xlsx("MyExcelFile.xlsx", 1 , stringsAsFactors=F) SecondTable <- read.xlsx("MyExcelFile.xlsx", 2 , stringsAsFactors=F) 
  • 我会尝试'xlsx'包,因为它很容易处理,似乎已经够成熟了
  • 为我工作得很好,不需要像Perl或任何其他的东西

2015年例子:

 library("readxl") FirstTable <- read_excel("MyExcelFile.xlsx", 1) SecondTable <- read_excel("MyExcelFile.xlsx", 2) 
  • 现在我使用readxl并已经取得了很好的经验。
  • 没有额外的东西需要
  • 很好的performance

我最近发现Schaun Wheeler的function是在意识到xlxs软件包没有为R 3.1.0更新之后,将excel文件导入到R中。

https://gist.github.com/schaunwheeler/5825002

文件名需要具有“.xlsx”扩展名,并且在运行该函数时文件不能打开。

这个function对于访问其他人的工作非常有用。 使用read.csv函数的主要优点是何时

  • 导入多个Excel文件
  • 导入大文件
  • 定期更新的文件

使用read.csv函数需要手动打开和保存每个Excel文档,这是耗时和非常无聊的。 使用Schaun的function来自动化工作stream程是一个巨大的帮助。

Schaun为这个解决scheme的大道具。

如果你遇到同样的问题,R给你一个错误 – 找不到函数“.jnew” – 只需安装库rJava。 或者,如果你已经只是运行线库(rJava)。 这应该是问题。

另外,大家应该清楚csv和txt文件更容易处理,但是生活并不容易,有时你只需要打开一个xlsx。

你的操作系统是什么? 你正在运行什么版本的R:32位或64位? 你安装了什么版本的Java?

我刚开始使用read.xlsx()函数时发现了类似的错误,并发现我的问题(与您的问题可能相关,也可能不相关;至less应将此回应视为“也请尝试此操作”)与64位Java的.xlsx pacakge的不兼容性有关。 我相当确定.xlsx软件包需要32位Java。

使用32位R并确保安装了32位Java。 这可能解决您的问题。

你已经检查过R实际上是否能find这个文件,比如file.exists(“C:/AB_DNA_Tag_Numbers.xlsx”)? – 本博尔克8月14'11日在23:05

以上评论应该已经解决了你的问题:

 require("xlsx") read.xlsx("filepath/filename.xlsx",1) 

应该在那之后正常工作。

对我来说,openxlx包以最简单的方式工作。

 install.packages("openxlsx") library(openxlsx) rawData<-read.xlsx("your.xlsx"); 

如果您导出到OpenDocument电子表格文件( ods )或较旧的Excel格式,并使用上述ODS阅读器或Excel阅读器导入它,则可以保留多个选项卡和更多格式信息。

正如许多人在这里所说,我写的是同样的事情,但有一个额外的观点!

首先,我们需要确保我们的R Studio安装了这两个软件包:

  1. “readxl”
  2. “XLConnect”

为了在R中加载一个包,你可以使用下面的函数:

 install.packages("readxl/XLConnect") library(XLConnect) search() 

search将显示R Studio中可用的当前包列表。

现在另一个问题,即使你可能有这两个包,但你仍然可能在阅读“xlsx”文件时遇到问题,错误可能是“错误:列名比列多”

要解决这个问题,你可以简单的重新保存你的Excel表格“xlsx”到

“CSV(逗号分隔)”

和你的生活将是超级简单….

玩的开心!!