RODBCを介してエクセルシートを読み込む関数 getXls
ブック名およびシート名を指定して、エクセルファイルからデータをインポートします。パッケージRODBCを使用するので、あらかじめCRANかミラーからインストールしておいてください。
インストールさえされていれば、
library()
は自動で行なわれます。一度に読み出せるシートの数は1枚です。
引数には「ブック名のみ」または「ブック名とシート名(ないしシート番号)」を指定します。
「ブック名」しか指定しなかった場合、そのブックが含むシートが一覧されますので、番号ないしシート名を対話的に入力してください。
> getXls("dataset.xls")
There exist 3 sheets in the excel book.
1 2 3
"CO2" "iris" "women"
Hit the number or the name of the sheet you want to import : 3
height weight
1 58 115
2 59 117
3 60 120
4 61 123
5 62 126
6 63 129
7 64 132
8 65 135
9 66 139
10 67 142
11 68 146
12 69 150
13 70 154
14 71 159
15 72 164
sheet引数を指定すると、直接目的のシートを取り出せます。
> getXls("dataset.xls", sheet="women")
height weight
1 58 115
2 59 117
3 60 120
4 61 123
5 62 126
6 63 129
7 64 132
8 65 135
9 66 139
10 67 142
11 68 146
12 69 150
13 70 154
14 71 159
15 72 164
area引数を指定すると、読み込む範囲をエクセル風に指定できます。
列のインデックスは、AからZZまで利用できます。
> getXls("dataset.xls", sheet="CO2", area="A1:C5")
Plant Type Treatment
1 Qn1 Quebec nonchilled
2 Qn1 Quebec nonchilled
3 Qn1 Quebec nonchilled
4 Qn1 Quebec nonchilled
5 Qn1 Quebec nonchilled
simplify引数は、読み込んだデータをdata.frameのまま返すかmatrixにして返すかを指定する論理値です。
TRUE
にするとmatrixが返されます。> x <- getXls("dataset.xls", sheet="women")
> is.data.frame(x)
[1] TRUE #デフォルトではsimplify=FALSEなのでdata.frameが返っている
>
> y <- getXls("dataset.xls", sheet="women", simplify=TRUE)
> is.data.frame(y)
[1] FALSE
> is.matrix(y)
[1] TRUE #matrixになっている
使用したデータ例
RODBCがインストールされていないと、以下のようなエラーがでます。
適当なミラーからパッケージRODBCをインストールしてください。
> getXls("dataset.xls")
以下にエラー getXls("dataset.xls") : Please install the <RODBC> package from the CRAN.
日本語は対応してないかも分からんです。
そのへんはRODBCの仕様に依存します。
■更新履歴■
09.05.01 ver.1.02
simplify引数でmatrixに変換するかを指定できるようにしました。