今日の授業で完全無作為化法による試験区の割り付けを行いましたがプリントのRによる方法よりももっと直接的にA~Dの文字をランダムに出力する方法を紹介します。
w<-c("A","B","C","D") # 4種類の品種をA~Dで表す。練習問題2の場合はさらに"E"を追加する。 treatment<-rep(w,times=5) # wを5回(反復数)繰り返したベクトルを作る。"A","B","C","D","A","B","C","D".... treatment<-treatment[order(treatment)] # treatmentを並べ替えて"A","A","A","A","A","B","B"....にする。このステップは気分の問題なので、なくても良い。 x<-runif(20) # 練習問題2なら25 treatment[order(x)] # xの乱数ベクトルの小さい順に対応するtreatmentの文字が出力される。
同じ長さの数値ベクトルや因子ベクトルがあった場合、data.frame関数でそれらをまとめたデータフレームが作れます。
プリント62ベージの水稲籾重のデータなら
rice<-c(12,12,10,9,9,9,8,7,8,8,11,10,9,9,8) w<-rep(c("A","B","C"),times=5) w<-w[order(w)] # 最初から w<-c("A","A","A","A","A","B","B","B"..."C") としてももちろん問題ないが、コンピュータがやってくれるならタイプする文字は少ないほど楽。 fert<-factor(w) # 因子ベクトルにする data<-data.frame(rice,fert) # データフレームにする res<-aov(rice~fert,data) # summary(aov(...)) としてもいいが、aovの結果を変数に入れておくとあとで多重比較に使える。 summary(res) TukeyHSD(res)