web-dev-qa-db-ja.com

R、xlsxまたはxlsへのExcelファイルのインポート

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)

ありがとうございました。

82
nolyugo

厄介な外部依存関係*のないソリューションの場合、 readxl

Readxlパッケージを使用すると、ExcelからRにデータを簡単に取得できます。既存の多くのパッケージ(gdata、xlsx、xlsReadWriteなど)と比較して、readxlには外部依存関係がないため、すべてのオペレーティングシステムに簡単にインストールして使用できます。これは、単一のシートに保存されている表形式のデータで動作するように設計されています。

Readxlは、従来の.xls形式と最新のxmlベースの.xlsx形式の両方をサポートしています。 .xlsサポートは、libxls Cライブラリを使用して可能になります。これにより、基になるバイナリ形式の複雑さの多くが抽象化されます。 .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 が必要です。これは、Rの外部依存関係であるRtools(Windowsの場合)またはXcode(OSXの場合)を必要とします。パスなど。したがって、これはJavaおよびPerlの依存関係よりも優れています。

Updaterexcel パッケージがあります。これにより、Excelの書式設定、関数、およびその他の多くの種類の情報をExcelファイルからRに取り込むことができます。

94
Ben

XLConnectパッケージを試すこともできます。私はxlsxよりも運が良かった(さらに.xlsファイルも読み込める)。

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

また、ファイルが見つからないという問題がある場合は、file.choose()で選択してみてください。

35
Ian Fellows

gdataパッケージよりもかなり成熟したxlsxパッケージのread.xls関数を間違いなく試してみます。 Perlが必要になる場合があります...

22
Ben Bolker

更新

以下の回答はやや時代遅れなので、私はreadxlパッケージに注意を引くだけです。 Excelシートが適切にフォーマット/レイアウトされている場合、ワークブックから読み取るためにreadxlを使用します。シートの書式設定が不十分である場合、CSVにエクスポートし、Rでread.csv()または単純な古いreadLines()を使用して問題を処理します。

元の

私の好ましい方法は、個々のExcelシートをコンマ区切り値(CSV)ファイルに保存することです。 Windowsでは、これらのファイルはExcelに関連付けられているため、Excelでダブルクリックして開く「機能」を失うことはありません。

CSVファイルは、read.csv()を使用してRに読み込むことができます。または、ある場所にいる場合、またはヨーロッパの設定でセットアップされたコンピューター(,を小数点位置として使用)を使用している場合は、read.csv2()を使用します。

これらの関数には、適切にフォーマットされたファイルの読み取りを簡単にする賢明なデフォルトがあります。サンプルまたは変数のラベルを最初の行または列に保持するだけです。

ファイルをCSV形式で保存することの追加の利点は、ファイルがプレーンテキストであるため、ファイルを非常に簡単に渡すことができ、どこでも開くことができると確信できることです。データを表示または編集するためにExcelは必要ありません。

20
Gavin Simpson

例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を使用し、それを十分に経験しました。
  • 余分なものは必要ありません
  • 良好な成績
18
petermeissner

この新しいパッケージは素敵に見えます http://cran.r-project.org/web/packages/openxlsx/openxlsx.pdf rJavaを必要とせず、速度に「Rcpp」を使用しています。

14
RockScience

同じ問題に直面していて、Rがエラーを出している場合-関数 ".jnew"が見つかりませんでした-ライブラリrJavaをインストールするだけです。または、すでに行ライブラリ(rJava)を実行している場合。それが問題になるはずです。

また、csvファイルとtxtファイルの方が簡単に作業できることは誰にとっても明らかなはずですが、人生は簡単ではなく、場合によってはxlsxを開くだけです。

5
Wilmer E Henao

私は最近、xlxsパッケージがR 3.1.0用に更新されていないことに気付いた後、ExcelファイルをRにインポートするSchaun Wheelerの機能を発見しました。

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

ファイル名には「.xlsx」拡張子を付ける必要があり、関数を実行するときにファイルを開くことはできません。

この機能は、他の人の作業にアクセスするのに非常に便利です。 read.csv関数を使用することの主な利点は、次の場合です。

  • 複数のExcelファイルをインポートする
  • 大きなファイルをインポートする
  • 定期的に更新されるファイル

Read.csv関数を使用するには、各Excelドキュメントを手動で開いて保存する必要があり、時間がかかり、非常に退屈です。したがって、Schaunの機能を使用してワークフローを自動化することは非常に役立ちます。

このソリューションのためのショーンの大きな小道具。

4
Jonno Bourne

私にとって、openxlxパッケージは最も簡単な方法で機能しました。

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

Rが実際にファイルを見つけることができることを確認しました。 file.exists( "C:/AB_DNA_Tag_Numbers.xlsx")? –ベンボルカー11年8月14日23:05で

上記のコメントはあなたの問題を解決するはずです:

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

その後は正常に動作するはずです。

2
contradirony

お使いのオペレーティングシステムは何ですか?実行しているRのバージョン:32ビットまたは64ビット?どのバージョンのJavaをインストールしていますか?

read.xlsx()関数の使用を最初に開始したときに同様のエラーが発生し、私の問題(これはあなたの問題に関連している場合と関連していない場合があります。 .xlsxパッケージと64ビットJavaの非互換性。 .xlsxパッケージには32ビットJavaが必要であると確信しています。

32ビットRを使用して、32ビットJavaがインストールされていることを確認してください。これで問題が解決する場合があります。

2
user2755425

私は上記のすべての答えに一生懸命努力しました。ただし、Macを使用したため、実際には役に立ちませんでした。 rio libraryにはこのインポート機能があり、基本的にあらゆるタイプのデータファイルを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

1
Suyang Xu

OpenDocumentスプレッドシートファイル(ods)または古いExcel形式にエクスポートしてインポートすると、複数のタブとより多くの書式情報を保持できる場合があります ODS reader または上記のExcelリーダー。

1
Benjamin Atkin

ここで多くの人が述べたように、私は同じことを書いていますが、追加のポイントがあります!

最初に、R Studioに次の2つのパッケージがインストールされていることを確認する必要があります。

  1. 「readxl」
  2. 「XLConnect」

Rでパッケージをロードするには、以下の機能を使用できます。

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

検索すると、R Studioで利用可能な現在のパッケージのリストが表示されます。

これらの2つのパッケージがある場合でも、「xlsx」ファイルの読み取り中に問題が発生する可能性がありますが、エラーは「error:more columns more than column name」のようになります。

この問題を解決するには、Excelシート「xlsx」を保存し直してください。

「CSV(カンマ区切り)」

あなたの人生はとても簡単になります。

楽しむ!!