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ファイルを直接読み込む方法

xlsx パッケージの関数は read.xlsx() を使い,引数 sheetName でシート名を指定することで EXCEL ファイルを読み込むことが出来る.ちなみに,関数 write.xlsx() で EXCEL ファイルにデータを書き込むことも出来る.

 
 install.packages("xlsx", dep=T);
 library(xlsx);
 x <- read.xlsx("C:/temp/mydata.xlsx", sheetName="Sheet1")

他にもパッケージ xlsReadWrite が用意されている.

 


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 をファイルに書き出す.