# ←この記号の後は次の改行までコメントになります。

# データフレーム編 その2

# 統計解析で最も重要なデータ(患者データ・実験データなど)はRではデータフレームと
# して扱うことがほとんどです。すなわち、データフレーム操作に習熟することは、データ
# 操作の点でRの操作を学ぶことの必須項目と言えます。

# 今回は、データフレームにアクセスすることと、データフレームのデータの利用を練習します。
# 前回と同じデータフレームを利用します。まずは準備を、
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")),
    ethnicity=factor(c(rep("Japanese",4),"Chinese","Japanese","Korean",rep("Japanese",3)))
  )
# summary関数を使って全体の記述統計量を表示します。
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
# データフレームの中身にアクセスする方法その1

# attach関数を使ってデータフレームを現在の環境に付属させると、データフレームに
# 格納されたベクターに直接アクセスできるようになります。
attach(dataset.lesson5)
summary(ethnicity)
##  Chinese Japanese   Korean 
##        1        8        1
# detach関数を使って、くっつけたデータフレームを切り離します。
detach(dataset.lesson5)

# データフレームの中身にアクセスする方法その2
# with関数をつかうと、with(...)の括弧の中だけはデータフレームの中にアクセスでき
# るようになります。
with(dataset.lesson5,ethnicity)
##  [1] Japanese Japanese Japanese Japanese Chinese  Japanese Korean  
##  [8] Japanese Japanese Japanese
## Levels: Chinese Japanese Korean
with(dataset.lesson5,summary(ethnicity))
##  Chinese Japanese   Korean 
##        1        8        1
# データフレームの中身にアクセスする方法その3
# $を使って、DataFrame$Vectorと繋げることで、データフレームの中に格納された
# ベクターにアクセスできます。
dataset.lesson5$ethnicity
##  [1] Japanese Japanese Japanese Japanese Chinese  Japanese Korean  
##  [8] Japanese Japanese Japanese
## Levels: Chinese Japanese Korean
summary(dataset.lesson5$ethnicity)
##  Chinese Japanese   Korean 
##        1        8        1
# データフレームの中身にアクセスする方法その4
# bracket [...]を使います。
# データフレームをスプレッドシートの行列とみなし、[行, 列]と指定することでアクセスできます。
# 4列目のethnicityを指定します。行を未指定にすることで、指定した列に含まれる全ての行を表示
# します。
dataset.lesson5[,4] 
##  [1] Japanese Japanese Japanese Japanese Chinese  Japanese Korean  
##  [8] Japanese Japanese Japanese
## Levels: Chinese Japanese Korean
summary(dataset.lesson5[,4])
##  Chinese Japanese   Korean 
##        1        8        1
summary(dataset.lesson5[,c(2,4)])
##      sex       ethnicity
##  Female:4   Chinese :1  
##  Male  :6   Japanese:8  
##             Korean  :1
# 行を指定することも、行列を指定することもできます。
dataset.lesson5[2,]
##   age  sex stage ethnicity
## 2  82 Male  IIIa  Japanese
dataset.lesson5[2,4]
## [1] Japanese
## Levels: Chinese Japanese Korean
# 変数名で指定することもできます。
dataset.lesson5[,"ethnicity"]
##  [1] Japanese Japanese Japanese Japanese Chinese  Japanese Korean  
##  [8] Japanese Japanese Japanese
## Levels: Chinese Japanese Korean
summary(dataset.lesson5[,"ethnicity"])
##  Chinese Japanese   Korean 
##        1        8        1
summary(dataset.lesson5[,c("sex","ethnicity")])
##      sex       ethnicity
##  Female:4   Chinese :1  
##  Male  :6   Japanese:8  
##             Korean  :1
# 論理値で指定することもできます。
dataset.lesson5[,c(F,F,F,T)]
##  [1] Japanese Japanese Japanese Japanese Chinese  Japanese Korean  
##  [8] Japanese Japanese Japanese
## Levels: Chinese Japanese Korean
summary(dataset.lesson5[,c(F,F,F,T)])
##  Chinese Japanese   Korean 
##        1        8        1
summary(dataset.lesson5[,c(F,T,F,T)])
##      sex       ethnicity
##  Female:4   Chinese :1  
##  Male  :6   Japanese:8  
##             Korean  :1
# データフレームの中の一組のベクターを指定して、箱ひげ図を描いてみます。
attach(dataset.lesson5)
boxplot(age~sex)

detach(dataset.lesson5)

# ーーーーー 演習 ーーーーー
# データフレームの中身にアクセスする方法その2(with関数を使う),その3($を使う),
# その4(bracketを使う)を用いて、上記と同じように箱ひげ図を作図して下さい。