読者です 読者をやめる 読者になる 読者になる

一所懸命に手抜きする

監査の仕事をしています。ITを利用し、良い意味で「手抜き」することは効率化と精度アップに役立つと思うんです。部下への引き継ぎのためにまずは諸々頭から引っ張り出そうとブログを始めました。

[ Main ]  [ 別館 ]
当ブログで取り上げられている事案やデータベース、人物等はすべてフィクションです。

Excelからデータを読み込むR関数(2)readxl::read_excel

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.
広告を非表示にする