# ←この記号の後は次の改行までコメントになります。
# データフレーム編
# 統計解析で最も重要なデータ(患者データ・実験データなど)はRではデータフレームと
# して扱うことがほとんどです。すなわち、データフレーム操作に習熟することは、データ
# 操作の点でRの操作を学ぶことのゴールと言えます。
# データフレームとは何か?データフレームを作る、データフレームをファイルから読む、
# データフレームを編集する。の順で説明します。
# データフレームとは何か?
# 複数の同じ長さ(=サンプル数)のベクター(Lesson3-4で説明しました)をまとめて
# 束ねたオブジェクトである。
# Excelなどの表計算ソフトで、行を患者、列をそれぞれのベクター(変数)と考えると
# わかりやすい。
# 実際にデータフレームを見てみましょう。
library(datasets) # Rに備え付けのデータを読み込みます。
# 虫除け6製品の効果のデータです。N=72
# 1列目のcountには虫の数が、2列目のsprayには虫除けスプレーの商品記号(A-F)が入っています。
# データフレームに対してsummary関数を使うと、含まれる全てのベクターの要約統計量を示します。
summary(InsectSprays)
## count spray
## Min. : 0.00 A:12
## 1st Qu.: 3.00 B:12
## Median : 7.00 C:12
## Mean : 9.50 D:12
## 3rd Qu.:14.25 E:12
## Max. :26.00 F:12
# ちょっとお遊びに、製品ごとのヒストグラムを書いてみましょう。
boxplot(count~spray,data=InsectSprays)

# 2列目の製品ごとに、虫の寄ってくる数が示されています。CDEがよく効くようです。
# データフレームを作る
# Lesson 4のデータをデータフレームにまとめてみましょう。
# data.frame関数を使います
# データフレーム名 <- data.frame(列1 = ...、列2 = ...、列3 = ...)
dataset.lesson5<-
data.frame(
Age=c(63,82,62,58,71,60,64,74,89,72),
Sex=c("Male","Male","Female","Male","Female","Female","Male","Male","Male","Female"),
Stage=ordered(c(1,3,2,2,4,1,3,2,2,3),labels=c("I","II","IIIa","IIIb"))
)
head(dataset.lesson5) # データフレームの先頭から5行を見てみます
## Age Sex Stage
## 1 63 Male I
## 2 82 Male IIIa
## 3 62 Female II
## 4 58 Male II
## 5 71 Female IIIb
## 6 60 Female I
head(dataset.lesson5,8) # 見る範囲を増やすこともできます
## Age Sex Stage
## 1 63 Male I
## 2 82 Male IIIa
## 3 62 Female II
## 4 58 Male II
## 5 71 Female IIIb
## 6 60 Female I
## 7 64 Male IIIa
## 8 74 Male II
summary(dataset.lesson5) # 全体の要約統計
## Age Sex Stage
## Min. :58.00 Female:4 I :2
## 1st Qu.:62.25 Male :6 II :4
## Median :67.50 IIIa:3
## Mean :69.50 IIIb:1
## 3rd Qu.:73.50
## Max. :89.00
# データフレームはディスクに保存してあるcsvファイルなどから読み出すこともできます。
# 上で作ったデータフレームをcsvファイルにしてディスクに保存します。
write.csv(dataset.lesson5,file="dataset.lesson5.csv")
# RStudioを使っていたら、右下のウィンドウからFilesタグをクリックしてみて下さい。
# dataset.lesson5.csvというファイルができているはずです。
# read.csv関数をつかってディスクからデータを読み出す。
# 今までのdataset.lesson5は上書きされます。
# header=Tとは先頭行を変数名として使いますということです。
dataset.lesson5<-read.csv("dataset.lesson5.csv",header=T)
summary(dataset.lesson5)
## X Age Sex Stage
## Min. : 1.00 Min. :58.00 Female:4 I :2
## 1st Qu.: 3.25 1st Qu.:62.25 Male :6 II :4
## Median : 5.50 Median :67.50 IIIa:3
## Mean : 5.50 Mean :69.50 IIIb:1
## 3rd Qu.: 7.75 3rd Qu.:73.50
## Max. :10.00 Max. :89.00
# データフレームの編集
# 読み込む時に先頭行の通し番号も変数Xとして読まれてしまったので、これを削除しましょう
# 幾つか方法がありますが、ここではシンプルな方法を示します。
# データフレーム名$ベクター名でデータフレームに格納されたベクターにアクセスできます。
dataset.lesson5$X<-NULL
# その他に、
# dataset.lesson5[,1]<-NULL としてもOKです。[,1]とは1列目を表す。
# データフレームにベクターを追加する。
# データフレーム名$新しいベクター名 <- データで追加できます。
# rep関数は、値を与えられた回数だけ繰り返す働きをします。
dataset.lesson5$Ethnicity<-
factor(c(rep("Japanese",4),"Chinese","Japanese","Korean",rep("Japanese",3)))
dataset.lesson5
## Age Sex Stage Ethnicity
## 1 63 Male I Japanese
## 2 82 Male IIIa Japanese
## 3 62 Female II Japanese
## 4 58 Male II Japanese
## 5 71 Female IIIb Chinese
## 6 60 Female I Japanese
## 7 64 Male IIIa Korean
## 8 74 Male II Japanese
## 9 89 Male II Japanese
## 10 72 Female IIIa Japanese
summary(dataset.lesson5)
## Age Sex Stage Ethnicity
## Min. :58.00 Female:4 I :2 Chinese :1
## 1st Qu.:62.25 Male :6 II :4 Japanese:8
## Median :67.50 IIIa:3 Korean :1
## Mean :69.50 IIIb:1
## 3rd Qu.:73.50
## Max. :89.00
# データフレームの変数名を変更することができます。
# names関数はデータフレームに含まれるベクターの名前を表示します。
names(dataset.lesson5)
## [1] "Age" "Sex" "Stage" "Ethnicity"
names(dataset.lesson5)<-c("age","sex","stage","ethnicity")
names(dataset.lesson5)
## [1] "age" "sex" "stage" "ethnicity"
summary(dataset.lesson5)
## age sex stage ethnicity
## Min. :58.00 Female:4 I :2 Chinese :1
## 1st Qu.:62.25 Male :6 II :4 Japanese:8
## Median :67.50 IIIa:3 Korean :1
## Mean :69.50 IIIb:1
## 3rd Qu.:73.50
## Max. :89.00
# 次はデータフレームに含まれるデータを参照して、解析をしてみます。