97

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)

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

4

15 に答える 15

115

手間のかかる外部依存*のないソリューションの場合、次のものがあります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パッケージが必要であり、Rtools (Windows の場合) または Xcode (OSX の場合) が必要です。これらは R の外部に依存しています。しかし、パスなどをいじる必要はありません。 Java および Perl の依存関係よりも優れています。

更新rexcelパッケージが追加されました。これにより、Excel の書式設定、関数、およびその他の多くの種類の情報を Excel ファイルから R に取得することが約束されます。

于 2015-03-19T07:11:34.240 に答える
35

XLConnectパッケージを試してみることもできます。私はxlsxよりも幸運に恵まれました(さらに、.xlsファイルも読み取ることができます)。

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

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

于 2012-04-09T21:05:00.863 に答える
23

パッケージよりもかなり成熟しread.xlsたパッケージの機能をぜひ試してみてください。Perlが必要な場合があります...gdataxlsx

于 2011-08-14T23:06:45.123 に答える
21

アップデート

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

オリジナル

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

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

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

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

于 2011-08-13T08:17:13.493 に答える
20

例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し、それを使って良い経験をしました。
  • 余分なものは必要ありません
  • 良好なパフォーマンス
于 2012-09-25T10:31:19.907 に答える
5

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

また、csv ファイルと txt ファイルの方が作業しやすいことは誰にとっても明らかですが、人生は簡単ではなく、時々 xlsx を開く必要があることもあります。

于 2012-04-09T19:35:43.610 に答える
4

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

install.packages("openxlsx")
library(openxlsx)
rawData<-read.xlsx("your.xlsx");
于 2015-06-26T13:16:18.447 に答える
4

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

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

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

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

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

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

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

于 2014-05-28T06:45:49.977 に答える
2

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

この関数を初めて使用したときに同様のエラーが発生しread.xlsx()、自分の問題 (あなたの問題に関連している場合もあれば、関連していない場合もあります。少なくとも、この応答は「これも試してください」と見なす必要があります) が非互換性に関連していることがわかりました。 64 ビット Java の .xlsx パッケージ。.xlsx パッケージには 32 ビット Java が必要であることは確かです。

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

于 2013-09-06T18:49:51.150 に答える
1

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

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

  1. 「readxl」
  2. 「XLコネクト」

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

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

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

これらの 2 つのパッケージがある場合でも、「xlsx」ファイルの読み取り中に問題が発生し、「エラー: 列名よりも列が多い」というエラーが発生する可能性があります。

この問題を解決するには、Excel シート「xlsx」を次の場所に再保存するだけです。

「CSV(カンマ区切り)」

そしてあなたの人生はとても楽になります....

楽しむ!!

于 2016-05-27T08:30:19.863 に答える
1

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

于 2011-08-13T08:22:04.780 に答える