R:lattice.qq治療のマルチパネルプロット[x] vsコントロールを行うにはどうすればよいですか?
質問
私は次のようなデータフレームを持っています:
str(Data)
'data.frame': 11520 obs. of 29 variables:
$ groupname : Factor w/ 8 levels "Control","Treatment1",..: 1 1 1 1 1 1 1 1 1 1 ...
$ fCycle : Factor w/ 2 levels "Dark","Light": 2 2 2 2 2 2 2 2 2 2 ...
$ totdist : num 0 67.5 89.8 109.1 58.3 ...
#etc.
このようなTreatment1対制御の単一のプロットを行うことができます:
qq(groupname~totdist|fCycle, data=Data,
subset=(groupname=='Control'|groupname=='Treatment1'))
このように見えます:
Treatment2対Control ... TreatmentX対Controlの同様のプロットを自動的に作成したいと思います。これはループの場所ですか、それとも格子はより良い方法を持っていますか?
解決
これを1つのパネルで行うには、再配置が必要です。まず、あなたと同じ種類の構造を持つサンプルデータセットを生成します
library(lattice)
Data <- data.frame(groupname = factor(rep(c('Control',paste('Treatment',1:7,sep='')),each = 100)),
fCycle = factor(rep(rep(c('Dark','Light'),each = 50),8)),
totdist = sample(unlist(iris),800,replace = TRUE))
次に、変数を追加して治療とコントロールを区別します(つまり、 "Treatment2"
Asとして再確認されます "Treatment"
, 、など)
Data$groupname2 <- factor(gsub('[1-9]','',as.character(Data$groupname)))
次に、各治療グループにコントロールデータのコピーが与えられるように、データセットを再配置します
Data2 <- NULL
for(treat in paste('Treatment',1:7,sep='')){
Data2 <- rbind(Data2,
cbind(rbind(Data[Data$groupname == treat,],Data[Data$groupname == 'Control',]),
treat))
}
最後に、目的のグラフを作成できます
qq(groupname2~totdist|fCycle*treat, data=Data2)
治療ごとに個別のプロットが必要な場合は、ループの方が良いでしょう
pdf('treatVsContQq.pdf')
for(treat in paste('Treatment',1:7,sep='')){
print(qq(groupname~totdist|fCycle, data=Data,
subset=(groupname=='Control'|groupname==treat)))
}
dev.off()
所属していません StackOverflow