No.01725 R:抽出データの一括plot  【Rはじめました】 2006/12/01(Fri) 17:34

度々申し訳ありません。先にご指導した方法を応用してplotを試みておりますが,うまくいきません。お力添え頂けないでしょうか。
species <- c("A","B","A","C","D","E","A","B","E","A","C","B","D")
length <- c(13,20,14,18,18,13,14,17,18,14,19,20,15)
color <- c(1,1,1,2,2,1,1,2,1,2,2,2,1)
sex <- c(1,1,1,1,1,1,1,2,2,2,2,2,2)
data <- data.frame(species = species, length = length, color = color, sex = sex)
と いうデータに対して,species=A,B,Dを抽出して,colorとsexのカテゴリ毎にplotしたいのです。即ち,「color=1,sex= 1」と「color=1,sex=2」と「color=2,sex=1」と「color=2,sex=2」の4つのplotoを作りたいのです。もちろ ん,4種類のデータ系列を作ってそれぞれプロットしていけばできますが,先にご指導頂いたように,一括してプロットできれば,図の変更等も簡単で間違いも 少ないため,そのようにやってみたいのですが,うまくいきません。以下のようにやってみましたが,forで指定する1:2がcolorとsexの両方にか かっていることが問題なのでしょうか。2つの変数をそれぞれ変化させて総当たりにするということになるかと思いますが,その方法がどうしても分かりませ ん。
data <- data[data$species =="A"|data$species =="B"|data$species =="D",] 
par(mfrow=c(2,2))
for(i in 1:2){
selected <- is.element(color,i) & is.element(sex,i)
boxplot(length([selected]~factor(species[selected]))
}
他に
set <- c(1,2)
for(i in 1:2){
selected <- is.element(color,set[,i]) & is.element(sex,set[,i])
boxplot(length([selected]~factor(species[selected]))
}
for(i in 1:2){
selected1 <- is.element(color,i)
selected2 <- is.element(sex,i)
selected <- selected1 | selected2
boxplot(length([selected]~factor(species[selected])))
}
なども色々試しましたが,だめです。。
何卒お力添え頂きたく,お願い申し上げます。

No.01732 Re: R:抽出データの一括plot  【青木繁伸】 2006/12/02(Sat) 08:33

ポイントは,color と sex が2カテゴリーずつですので,組み合わすと4通りになるというところ。
しかるに,for は boxplot が2回しか繰り返されないと言うこと。
for を二重にします。(他にもやり方はあるんですが,簡単のために)
for(i in 1:2) {
for (j in 1:2) {
selected <- is.element(color,i) & is.element(sex,j)
print(sum(selected))
boxplot(length[selected]~factor(species[selected]))
}
}

No.01736 Re: R:抽出データの一括plot  【Rはじめました】 2006/12/03(Sun) 01:59

なるほど,forを二重にすればよいのですね。
うまくいきました。
何度もありがとうございます。青木先生やコメントいただいた皆様に深謝いたします。
独学では厳しく,一度は諦めかけましたが,ここで救われました。
引き続き,Rに漬かっていきたいと思います。今後ともご指導のほど宜しくお願いします。

● 「統計学関連なんでもあり」の過去ログ--- 039 の目次へジャンプ
● 「統計学関連なんでもあり」の目次へジャンプ
● 直前のページへ戻る