7

私は R の初心者で、行名と列名を使用して Excel データを R にインポートする方法を考えていました。具体的には、1 つの Excel ファイル内の多数のワークシートにあるデータのサブセットが必要です。行名と列名を使用して、データの特定のセルを識別して R に抽出できますか?

Worksheet 1
----------
* X Y Z 
A 1 2 2
B 1 1 1
C 1 3 4
D 4 2 2
E 2 2 2 
----------
Worksheet 2
----------
*  X Y1 Z1 
A 1  2  2
B 1  2  3
C 1  3  4
D 4  1  1
E 2  1  1 

たとえば、上記のスプレッドシートでは、ワークシート 1 の行名と列名 (D,Y) (D,Z) (E,Y) (E,Z) を使用してデータ (2,2,2,2) を抽出する方法を教えてください。

ワークシート 2 の行名と列名 (D,Y1) (D,Z1) (E,Y1) (E,Z1) を使用してデータ (1,1,1,1) を抽出するにはどうすればよいですか?

助けてくれてありがとう

バリー

4

2 に答える 2

8

@Andrie は XLConnect パッケージについて言及しました。これは、Excel シートで領域を選択できる、R と Excel 間の I/O に非常に役立つパッケージです。

あなたのような Excel ファイルを Dropbox パブリック フォルダーに作成しました。ここexample.xlsからファイルをダウンロードできます。

require(XLConnect)

## A5:C5 correspond to (D,Y) (D,Z) (E,Y) (E,Z)  in your example
selectworksheet1 <- readWorksheetFromFile("/home/ahmadou/Dropbox/Public/example.xls",
                               sheet = "Worksheet1", 
                               region = "A5:C5", header = FALSE)

selectworksheet1
##  Col0 Col1 Col2
## 1    2    2    2


## B4:C5 correspond to (D,Y1) (D,Z1) (E,Y1) (E,Z1) in the second example
selectworksheet2 <- readWorksheetFromFile("/home/ahmadou/Dropbox/Public/example.xls",
                         sheet = "Worksheet2", 
                         region = "B4:C5", header = FALSE)

selectworksheet2
##   Col0 Col1
## 1    1    1
## 2    1    1

unlist(selectworksheet2)
## Col01 Col02 Col11 Col12 
##    1     1     1     1 
于 2012-08-15T10:59:14.633 に答える
3

ExcelデータをRにインポートする関数を提供するパッケージがいくつかあります。Rデータのインポート/エクスポートのドキュメントを参照してください。

xlsxパッケージが便利であることがわかりました(.xlsファイルと.xlsxファイルの両方を読み取ります)。行/列の名前を入力として受け入れるとは思いませんが、それらの数値(たとえば、行1、列4)は受け入れます。あなたの場合、X、Y、Zが列1〜3に対応すると仮定すると、このようなものが機能するはずです。

library(xlsx)
# first example subset; call it ss1
# assume first row is not a header; otherwise requires header = T
ss1 <- read.xlsx("myfile.xlsx", sheetIndex = 1, rowIndex = 4:5, colIndex = 2:3)

# second example subset; call it ss2
# just the same except worksheet index = 2
ss2 <- read.xlsx("myfile.xlsx", sheetIndex = 2, rowIndex = 4:5, colIndex = 2:3)

ただし、期待どおりに機能するまで、独自のファイルを試す必要があります。sheetNameを指定することもできますが、各シートの正しいインデックスを見つければ、通常、 sheetIndexの方が確実に機能することがわかります。また、最初の行がヘッダーであるかどうかに注意してください。

とはいえ、私の好みのオプションは、シートをCSVなどのテキスト形式にエクスポートし、シェルツール(カット、ヘッド、テールなど)を使用して必要な行/列を取得し、それをRにインポートすることです。

于 2012-08-15T09:25:00.407 に答える