41. EXCEL のデータを読み込む


Microsoft EXCEL のデータ(もしくは Open Office の calc のデータ)を R へ読み込む際のテクニックをいくつか紹介する.

csvファイルに保存する方法

目的は関数 read.csv() で読み込める形式にすることである(前節の data05.txt の状態).まず,EXCEL ファイルを開き,メニューの [ファイル] の [開く] から,[名前をつけて保存] を選択する.

保存する名前をつけた後,次に [ファイルの種類] から [CSV カンマ区切り] (Open Office の calc ならば [テキスト CSV] )を選択して保存する.Windows 版 R の場合は以下のようになる.

Mac OS X 版 R の場合は以下のようになる.

【別名で保存】

【CSV 形式で保存】

元の EXCEL ファイルに列名がある場合は単に read.csv("ファイル名") とすればよい.列名が無い場合は,関数 read.csv() の引数 header に F を指定し,引数 col.names に列名を指定すれば良い.

 
 ( x <- read.csv("data00.txt", header=F, 
                 col.names=c("SEX","HEIGHT","WEIGHT")) )

  SEX HEIGHT WEIGHT
1   F    158     51
2   F    162     55
3   M    177     72
4   M    173     57
5   M    166     64

 data00.txt

 
F,158,51
F,162,55
M,177,72
M,173,57
M,166,64

EXCELのセルをコピー&ペーストする方法

まず,EXCEL のセルをコピーする.Windows 版の場合は,列名をコピーしてもしなくてもよいが,Mac OS X 版の場合は列名をコピーしてはいけない(データのみコピー).

【Windows 版】

【Mac OS X 版】

【Windows 版の場合】
列名をコピーした場合は以下のようにすればよい

これは直接コンソール画面に入力すること.R Editor から実行すると,エディタの仕様の関係で上手く機能しない.

 
 x < read.delim("clipboard")

ところで,関数 write.table(x, "clipboard", sep="\t") でデータ x をクリップボードにコピーすることが出来,この後 EXCEL シートにデータをペーストすることが出来る.

列名をコピーしなかった場合は以下のようにすればよい.

 
 x < read.delim("clipboard", header=F)

【Mac OS X 版の場合】
まず以下の関数を定義する.

 
 excel.mac <- function(...) {
   args <- c(...)
   temp <- matrix(scan(""), byrow=TRUE, ncol=length(args))
   data <- data.frame(temp)
   colnames(data) <- args
   return(data)
 }

次に,関数 excel.mac("変数名1","変数名2",・・・) を実行する.すると,以下のような画面になる.

 
 x <- excel.mac("X", "Y")
1:

ここで,画面にデータをペーストする.データが読みとられた後, を 2 回ほど押すとデータ入力が終了する.

 
 x <- 1

xlsファイルを直接読み込む方法

gregmisc パッケージと Perl を用意することで,xls 形式のファイルを直接読み込むことが出来る.関数は read.xls() を使い,引数 sheet でシート番号を指定することが出来る.

 
 library(gregmisc)
 x <- read.xls("data01.xls", sheet=1)

ただし,Windows 版 R の場合で Perl を入れる必要がある.以下に,ActiveState:

から 「ActivePerl」 を入れる方法を紹介する.

ActivePerl のインストール方法

まず,左下図の 「ActivePerl x.x.x.xxx」 をクリックし,右下図の 「Download」 をクリックする.

すると,ユーザー名を入れる画面(左下図)になるので,(名前を入れたい人は名前を入れてから) 〔Next >〕 をクリックする.すると,ダウンロード出来る実行ファイル一覧が出るので,Windows 版の ActivePerl をダウンロードする.OS が 2000/XP の方は MSI 版をダウンロードしてインストール,98/Me/NT の方は「Windows Installer」をインストールしてから MSI 版をダウンロードしてインストールすればよい.

インストーラがダウンロードできたら,インストーラを起動する.まず 〔Next >〕 をクリックするとライセンス条項が書かれた画面になるので,一読した後 〔Next >〕 をクリックする.

あとは 〔Next >〕 をクリックし続ける.

ActivePerl をインストールする場所は変更しない方がよい(デフォルトは C:\perl\bin\perl.exe ).変更すると,関数 read.xls() を実行する際,その都度 ActivePerl の実行ファイルがある場所を引数 perl で指定しなければいけなくなる.

あとは 〔Next >〕 をクリックし続けると,〔Install〕 と書かれたボタンが出てくるので,これをクリックする.

すると,インストールが始まり,しばらくするとインストールが完了する.

 


R 以外のソフトで作成されたデータファイルの読み込み

R 以外の統計ソフト ( SAS など) で作成されたデータファイルからデータを読む場合は,パッケージ foreign 中の関数を用いる.例えば SPSS のデータファイルを読み込む場合は以下のようにする.

 
 library(foreign)
 read.spss("datafile", use.value.labels=FALSE)

R の foreign パッケージには以下の関数が用意されている.

関数

機能

lookup.xport()

SAS XPORT フォーマットライブラリについての情報を探す.

read.dta()

Stata binary files を読み込む.

read.epiinfo()

Epi Info data files を読み込む.

read.mtp()

Minitab Portable Worksheet を読み込む.

read.spss()

SPSS data file を読み込む.

read.ssd()

read.xport() によって SAS のパーマネント・データセットからデータフレームを得る(SAS V9以降で作成されたデータセットのみ対応?).

read.xport()

SAS XPORT format library (ver.6) を読み込む.

write.dta()

Stata binary format をファイルに書き出す.