请有人帮我解决将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)
谢谢。
答案 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)
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函数的主要优点是
使用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安装了这两个软件包:
要在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