山口県立大学 | 看護学部 | サイトトップ | Software Tips | RについてのTips

データ入力から読み込みまでの丁寧な説明

このページは,Rにどうやってデータを読み込ませて使うかを,できるだけ丁寧に説明することを目的とする。

最終更新: 2006年 6月 9日 (金曜日) 14時10分

ごく少ないデータの場合

データ数がごく少ない場合は,Rのプログラム内で直接付値すればいい。例えば,身長155 cm,160 cm,170 cmの3人の平均(mean)と標準偏差(sd)を出すためには,

dat <- c(155,160,170)

とすれば,Rのプログラム内で扱える変数datができる。そこで,

cat("mean=",mean(dat),"sd=",sd(dat),"¥n")

とすれば平均と標準偏差が計算できる。また,クロス集計表を入力したい場合は行列として入力することは簡単である。例えば,次の表のようなデータがある場合を考えよう。

曝露の有無疾病あり疾病なし
曝露あり2010
曝露なし1218

これをdatという変数に付値するには,

dat <- matrix(c(20,12,10,18),nc=2)
rownames(dat) <- c('exposed','not exposed')
colnames(dat) <- c('disease','healthy')

とすればよい(計算するだけなら下2行は不要)。その後,曝露と疾病が独立であるかどうかをカイ二乗検定するには,

chisq.test(dat)

とするだけでよい。

ある程度大きなデータを単発で入れる場合

ある程度大きなデータを入力するときは,プログラムに直接書くのは見通しが悪くなるので,データとプログラムは分離するのが普通である。同じ調査を繰り返しするとか,きわめて大きなデータであるとかでなければ,表計算ソフトで入力するのが手軽であろう。きわめて単純な例として,10人の対象者についての身長と体重のデータが次の表のように得られているとする。

対象者ID身長(cm)体重(kg)
117070
217280
316672
417075
517455
619992
716880
818378
917787
10185100

まずこれをMicrosoft Excel(以下示す画面は2000のものである)やOpenOffice.org calc(以下示す画面は1.1ja版のものである)などの表計算ソフトに入力する。一番上の行には変数名を入れる。RjpWikiで開発が報告されている日本語版なら漢字やカタカナ,ひらがなも使えるようだが,半角英数字(半角ピリオドも使える)にしておくのが無難である。入力が終わったら,一旦,そのソフトの標準の形式で保存しておく(Excel形式calc形式)。入力完了した状態は,下の画面のようになる。

data entry by exceldata entry by calc
Microsoft Excelでの入力OpenOffice.org calcでの入力

次に,この表をタブ区切りテキスト形式で保存する。Microsoft Excelの場合,メニューバーの「ファイル(F)」から「名前を付けて保存」を選び,現れるウィンドウの一番下の「ファイルの種類(T)」のプルダウンメニューから「テキスト(タブ区切り)(*.txt)」を選ぶと,自動的にその上の行のファイル名の拡張子もxlsからtxtに変わるので,「保存(S)」ボタンを押せばOKである。複数のシートを含むブックの保存をサポートした形式でないとかいった警告がでてくるが無視して「はい」を選んでよい。その直後にExcelを終了しようとすると,何も変更していないのに「保存しますか」と聞く警告ウィンドウがでるが,既に保存してあるので「いいえ」と答えていい(「はい」を選んでも同じ内容が上書きされるだけだが)。この例では,desample.txtができる。

OpenOffice.org calcの場合も操作はほぼ同じで,「ファイル(F)」から「名前を付けて保存」を選び,ウィンドウ中ほどにある「ファイルの種類」で「テキストCSV(csv;txt)」を選ぶと,「テキストのエクスポート」というウィンドウが開くので,「文字列(C)」は「日本語(Windows-932)」のままでいいが,「フィールドの区切り記号」を「{タブ}」にし,「テキストの区切り記号」が二重引用符になっているのを削除して「OK」ボタンをクリックすれば良い。現在の表のみを保存したという警告が出るのは無視して差し支えない。この例では,desample.csvができる。なお,calcでも終了時に「外部形式で保存すると情報が失われる可能性があります。閉じてもよろしいですか?」というメッセージボックスがでてくるが「はい」を選んで良い。

data saving by exceldata saving by calc 1
data saving by calc 2
Microsoft Excelでのテキスト形式保存OpenOffice.org calcでのテキスト形式保存

あとはRで読み込めばいい。この例のように,複数の変数を含む変数名付きのデータを読み込むときは,データフレームという構造に付値するのが普通である。保存済みのデータが"d:¥desample.txt"だとすれば,Rのプロンプトに対して,

dat <- read.delim("d:/desample.txt")

と打てば,データがdatというデータフレームに付値される。確認のためにデータを表示させたければ,ただdatと打てばいいし,データ構造を見たければ,str(dat)とすればよい。読み込まれた変数に対して分析したいとき,例えばこの例の身長の平均と標準偏差を出したければ,

cat("mean=",mean(dat$HT),"sd=",sd(dat$HT),"¥n")

とすればよい。一々dat$と打つのが面倒ならば,attach(dat)とすれば,それ以降のセッション中,detach(dat)するまで,dat$を入力しなくても良くなる。例えば,このデータで身長と体重の相関係数を出して検定したいときは次のようにする。

attach(dat)
cor.test(HT,WT)
detach(dat)

大量のデータあるいは継続的に何度も繰り返してとるデータの場合

Microsoft AccessやOracleなどのデータベースソフトを使ってフォームを作って入力するのが一般的である。または,htmlでフォームを書いて,cgiでデータ化するのでもよい(実装方法の簡単な一例)。それぞれ一長一短あるが,ここで詳しく説明することは大変なので,専門家に相談することも検討すべきであろう。

また,2次元の表形式では扱いにくいデータの場合も,入力には工夫が必要である。Rの拡張を書いて直接読ませるのがいいかもしれない。


リンクと引用について

Correspondence to: minato@ypu.jp.