请有人帮助我将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")
Run Code Online (Sandbox Code Playgroud)
要么
AB<-read.xlsx("C:/AB_DNA_Tag_Numbers.xlsx",1)
Run Code Online (Sandbox Code Playgroud)
但我得到错误:
Error in .jnew("java/io/FileInputStream", file) :
java.io.FileNotFoundException: C:\AB_DNA_Tag_Numbers.xlsx (The system cannot find the file specified)
Run Code Online (Sandbox Code Playgroud)
谢谢.
Ben*_*Ben 95
对于没有繁琐的外部依赖*的解决方案,现在有readxl
:
readxl包使得从Excel和R中获取数据变得容易.与许多现有的包(例如gdata,xlsx,xlsReadWrite)相比,readxl没有外部依赖性,因此很容易在所有操作系统上安装和使用.它旨在处理存储在单个工作表中的表格数据.
Readxl支持传统.xls格式和现代基于xml的.xlsx格式.使用libxls C库可以实现.xls支持,它可以抽象出底层二进制格式的许多复杂性.要解析.xlsx,我们使用RapidXML C++库.
它可以像这样安装:
install.packages("readxl") # CRAN version
Run Code Online (Sandbox Code Playgroud)
要么
devtools::install_github("hadley/readxl") # development version
Run Code Online (Sandbox Code Playgroud)
用法
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")
Run Code Online (Sandbox Code Playgroud)
*并非严格来说,它需要Rcpp
包,而后者又需要Rtools(对于Windows)或Xcode(对于OSX),它们是R外部的依赖项.但它们不需要任何摆弄路径等,所以这是一个优于Java和Perl依赖项.
更新现在有rexcel包.这有望从Excel文件到R中获取Excel格式,函数和许多其他类型的信息.
Ian*_*ows 35
您可能还想尝试XLConnect包.我的运气比xlsx好(加上它也可以读取.xls文件).
library(XLConnect)
theData <- readWorksheet(loadWorkbook("C:/AB_DNA_Tag_Numbers.xlsx"),sheet=1)
Run Code Online (Sandbox Code Playgroud)
此外,如果您在找不到文件时遇到问题,请尝试使用file.choose()选择它.
Rei*_*son 20
由于下面的答案现在有点过时,我只是提请注意readxl包.如果Excel表格格式良好/已经存在,那么我现在将使用readxl从工作簿中读取.如果工作表格式不佳/已经存在,那么我仍然会导出到CSV,然后通过read.csv()
或简单处理R中的问题readLines()
.
我首选的方法是将单个Excel工作表保存为逗号分隔值(CSV)文件.在Windows上,这些文件与Excel关联,因此您不会丢失双击 - 打开Excel"功能".
CSV文件可以使用read.csv()
,或者,如果您在某个位置或使用设置了某些欧洲设置的计算机(,
用作小数位),则可以使用read.csv2()
.
这些函数具有合理的默认值,可以简单地读取格式正确的文件.只需在第一行或第一列中保留样本或变量的任何标签.
将文件存储在CSV中的附加好处是,由于文件是纯文本,因此可以非常轻松地传递它们,并且您可以确信它们将在任何地方打开; 一个不需要Excel来查看或编辑数据.
pet*_*ner 18
例2012:
library("xlsx")
FirstTable <- read.xlsx("MyExcelFile.xlsx", 1 , stringsAsFactors=F)
SecondTable <- read.xlsx("MyExcelFile.xlsx", 2 , stringsAsFactors=F)
Run Code Online (Sandbox Code Playgroud)
示例2015:
library("readxl")
FirstTable <- read_excel("MyExcelFile.xlsx", 1)
SecondTable <- read_excel("MyExcelFile.xlsx", 2)
Run Code Online (Sandbox Code Playgroud)
readxl
并且已经用它做了很好的经验.Roc*_*nce 14
这个新包看起来不错http://cran.r-project.org/web/packages/openxlsx/openxlsx.pdf 它不需要rJava并且使用'Rcpp'来提高速度.
小智 5
如果你遇到同样的问题并且R给你一个错误 - 找不到函数".jnew" - 只需安装库rJava.或者,如果你已经拥有它,只需运行行库(rJava).那应该是问题所在.
此外,每个人都应该清楚csv和txt文件更容易使用,但生活并不容易,有时你只需要打开一个xlsx.
对我来说 openxlx 包以最简单的方式工作。
install.packages("openxlsx")
library(openxlsx)
rawData<-read.xlsx("your.xlsx");
Run Code Online (Sandbox Code Playgroud)