将Excel文件导入R,xlsx或xls

时间:2011-08-13 07:57:38

标签: 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")

OR

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)

谢谢。

14 个答案:

答案 0 :(得分:93)

对于没有繁琐的外部依赖*的解决方案,现在有readxl

  

readxl包使得从Excel和R中获取数据变得容易。   与许多现有软件包相比(例如gdata,xlsx,   xlsReadWrite)readxl没有外部依赖关系,因此很容易   在所有操作系统上安装和使用。它旨在与之合作   表格数据存储在一张表格中。

     

Readxl支持传统的.xls格式和基于xml的现代格式   .xlsx格式。使用libxls C库可以实现.xls支持,   它抽象出了底层二进制文件的许多复杂性   格式。要解析.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 package,而rexcel又需要Rtools(对于Windows)或Xcode(对于OSX),这是R之外的依赖。但是他们不需要任何摆弄与路径等,因此这是一个优于Java和Perl依赖的优势。

更新现在有{{3}}个包。这有望从Excel文件到R。

获取Excel格式,函数和许多其他类型的信息

答案 1 :(得分:34)

您可能还想尝试XLConnect包。我的运气比xlsx好(加上它也可以读取.xls文件)。

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

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

答案 2 :(得分:22)

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

答案 3 :(得分:20)

更新

由于下面的答案现在有些过时,我只想提请注意 readxl 包。如果Excel工作表格式良好/已经完成,那么我现在将使用 readxl 从工作簿中读取。如果工作表格式不正确/已放置,那么我仍然会导出为CSV,然后通过read.csv()或普通的readLines()处理R中的问题。

原始

我首选的方法是将单个Excel工作表保存为逗号分隔值(CSV)文件。在Windows上,这些文件与Excel关联,因此您不会松开双击 - 打开Excel“功能”。

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

这些函数具有合理的默认值,可以简单地读取格式正确的文件。只需在第一行或第一列中保留样本或变量的任何标签。

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

答案 4 :(得分:18)

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并且已经有了很好的使用经验。
  • 不需要额外的东西
  • 表现良好

答案 5 :(得分:14)

这个新包看起来不错http://cran.r-project.org/web/packages/openxlsx/openxlsx.pdf 它不需要rJava并且使用'Rcpp'来提高速度。

答案 6 :(得分:5)

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

此外,每个人都应该清楚csv和txt文件更容易使用,但生活并不容易,有时你只需要打开一个xlsx。

答案 7 :(得分:4)

我最近发现Schaun Wheeler的功能是在认识到xlxs软件包没有针对R 3.1.0进行更新后将excel文件导入到R中。

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

文件名需要有&#34; .xlsx&#34;扩展名,并且在运行该功能时文件无法打开。

此功能对于访问其他人的工作非常有用。使用read.csv函数的主要优点是

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

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

对于这个解决方案,Schaun有很大的道具。

答案 8 :(得分:4)

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

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

答案 9 :(得分:2)

你的操作系统是什么?您运行的是哪个版本的R:32位还是64位?你安装了什么版本的Java?

当我第一次开始使用read.xlsx()函数时发现了类似的错误并发现了我的问题(可能与您的问题有关,也可能没有;至少应该将此回复视为“试试这个, “。”与.xlsx pacakge与64位Java的不兼容性有关。我很确定.xlsx包需要32位Java。

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

答案 10 :(得分:2)

  

您已检查过R实际上是否能够找到该文件,例如file.exists(“C:/AB_DNA_Tag_Numbers.xlsx”)? - Ben Bolker 2011年8月14日23:05

以上评论应该可以解决您的问题:

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

之后应该可以正常工作。

答案 11 :(得分:1)

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

答案 12 :(得分:1)

正如许多人在这里所说的那样,我写的是同样的事情,但还有一点意思!

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

  1. &#34; readxl&#34;
  2. &#34; XLConnect&#34;
  3. 要在R中加载包,您可以使用以下功能:

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

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

    现在是另一个问题,即使你可能有这两个包,但是在阅读时仍然会遇到问题&#34; xlsx&#34;文件和错误可能像&#34;错误:列名多于列名&#34;

    要解决此问题,您只需重新保存您的Excel工作表&#34; xlsx&#34;在

      

    &#34; CSV(以逗号分隔)&#34;

    你的生活将非常轻松....

    玩得开心!!

答案 13 :(得分:1)

我在上面的所有答案上都非常努力。然而,他们实际上没有帮助,因为我使用了mac。 rio库具有此导入功能,基本上可以将任何类型的数据文件导入Rstudio ,甚至是那些使用英语以外语言的文件!

请尝试以下代码:

    library(rio)
    AB <- import("C:/AB_DNA_Tag_Numbers.xlsx")
    AB <- AB[,1]

希望这有帮助。 有关更详细的参考:https://cran.r-project.org/web/packages/rio/vignettes/rio.html