Rは標準ではExcelファイルを読み込めないらしい
企業では多くのデータがExcelファイルとして存在しますがRの標準ではExcelファイルを読み込めないのでした。
RODBCパッケージの関数を使うことで読み込めることを紹介しました。
最近ではreadxlという新しいパッケージが発表され、これがなかなか良いという評判です。
まずはサンプルを
例えば、Excelファイル「RTest.xls」の「社員名簿」シートがあります。
社員名簿サンプルExcelファイル作成コードRでExcelデータを読み込む(2)
readxlパッケージを使う方法
比較的新しいパッケージにreadxl(CRAN - Package readxl)があります。これを使うとExcelファイルからの読み込みが簡単です。このパッケージはEZRまたはrcmdrをインストールすると一緒にインストールされています。もちろん単独でインスールしても構いません。
readxlパッケージ中のread_excel関数
read_excel( path, # Excelのファイルパス名 sheet = 1, # シート名かシート番号 col_names = TRUE, # ヘッダの有無 col_types = NULL, # 列ごとのデータ型を定義。難しいです。 na = "", # 欠損値をどの文字に置き換えるか skip = 0) # 読み飛ばす行数
read_excel実行例1
library("readxl") read_excel("c:/wrk/Rtest.xls") ## DEFINEDNAME: 00 00 00 04 0b 00 00 00 00 00 00 00 00 00 01 3e 79 e1 54 0d 54 3f 7c 3b 00 00 00 00 06 00 00 00 02 00 ## DEFINEDNAME: 00 00 00 04 0b 00 00 00 00 00 00 00 00 00 01 3e 79 e1 54 0d 54 3f 7c 3b 00 00 00 00 06 00 00 00 02 00 ## DEFINEDNAME: 00 00 00 04 0b 00 00 00 00 00 00 00 00 00 01 3e 79 e1 54 0d 54 3f 7c 3b 00 00 00 00 06 00 00 00 02 00 ## DEFINEDNAME: 00 00 00 04 0b 00 00 00 00 00 00 00 00 00 01 3e 79 e1 54 0d 54 3f 7c 3b 00 00 00 00 06 00 00 00 02 00 ## 社員番号 部署 氏名 ## 1 1 営業部 山田太郎 ## 2 2 営業部 鈴木花子 ## 3 3 総務部 杉本一郎 ## 4 4 財務部 支払益子 ## 5 5 経理部 会計主水 ## 6 6 秘書室 白鳥麗子
DEFINEDNAME: が無駄に表示されています。これはバグらしいです(https://github.com/hadley/readxl/issues/82)。とりあえず、結果をデータフレームに取り込んでみます。
read_excel実行例2
library("readxl") df<-read_excel("c:/wrk/Rtest.xls") ## DEFINEDNAME: 00 00 00 04 0b 00 00 00 00 00 00 00 00 00 01 3e 79 e1 54 0d 54 3f 7c 3b 00 00 00 00 06 00 00 00 02 00 ## DEFINEDNAME: 00 00 00 04 0b 00 00 00 00 00 00 00 00 00 01 3e 79 e1 54 0d 54 3f 7c 3b 00 00 00 00 06 00 00 00 02 00 ## DEFINEDNAME: 00 00 00 04 0b 00 00 00 00 00 00 00 00 00 01 3e 79 e1 54 0d 54 3f 7c 3b 00 00 00 00 06 00 00 00 02 00 ## DEFINEDNAME: 00 00 00 04 0b 00 00 00 00 00 00 00 00 00 01 3e 79 e1 54 0d 54 3f 7c 3b 00 00 00 00 06 00 00 00 02 00 df ## 社員番号 部署 氏名 ## 1 1 営業部 山田太郎 ## 2 2 営業部 鈴木花子 ## 3 3 総務部 杉本一郎 ## 4 4 財務部 支払益子 ## 5 5 経理部 会計主水 ## 6 6 秘書室 白鳥麗子
DEFINEDNAME:は表示はされるものの結果として引き渡されないので、目障りですが無視して良いようです。
read_excel実行例3
次に、同じ内容のxlsx形式ファイルを試してみます。
library("readxl") read_excel("c:/wrk/Rtest.xlsx") ## 社員番号 部署 氏名 ## 1 1 営業部 山田太郎 ## 2 2 営業部 鈴木花子 ## 3 3 総務部 杉本一郎 ## 4 4 財務部 支払益子 ## 5 5 経理部 会計主水 ## 6 6 秘書室 白鳥麗子
こちらは、DEFINEDNAME:が出ていません。
なお、xlsファイルも、私の環境では何が影響したのかDEFINEDNAME:が表示されなくなりました。わからなくてすみません。
In R language,
readxl package enables us to import Excel files to R easily.
But needless DEFINEDNAME:........... lines are printed like headers in the case of conversion from xls files .
I hear it is a bug that has not been fixed yet.
But, fortunately, those printing can be separated from the output of the function.
And in the case of XLSX, DEFINEDNAME: is not printed.
So readxl is the easiest way to import Excel sheet to R dataframe, I think.
readxl package enables us to import Excel files to R easily.
But needless DEFINEDNAME:........... lines are printed like headers in the case of conversion from xls files .
I hear it is a bug that has not been fixed yet.
But, fortunately, those printing can be separated from the output of the function.
And in the case of XLSX, DEFINEDNAME: is not printed.
So readxl is the easiest way to import Excel sheet to R dataframe, I think.