ネストされた箇条書きの線に沿って、サブカテゴリとサブサブカテゴリに編成されたデータセットがあります。
-1
-1a
-1ai
-1aii
-1b
-1bi
...等々。
ggplot2を使用して、1のすべてのデータ、1aのみのデータ、1aiのみのデータなどを表示するドットプロットを作成したいと思います。
データセットの例:
x <- data.frame(cat=1, subA=letters[rep(1:5,each=10)],
subB=as.character(as.roman(rep(1:5,5,each=2))),value=rnorm(50,20,7))
> head(x)
cat subA subB value
1 1 a I 26.75573
2 1 a I 12.52218
3 1 a II 24.53499
4 1 a II 23.21012
5 1 a III 11.18173
6 1 a III 25.01914
最終的に次のようなグラフになりたいです。
非常に冗長な派生データフレームを作成するために多くのサブセット化とバインドを行うことでこのプロットを作成できましたが、これはDoingItWrongの明確な例のようです。
x2 <- with(x,rbind(cbind(key="1",x),
cbind(key="1 a",x[paste(cat,subA) == "1 a",]),
cbind(key="1 a I",x[paste(cat,subA,subB) == "1 a I",]),
cbind(key="1 a II",x[paste(cat,subA,subB) == "1 a II",])))
library(ggplot2)
library(plyr)
ggplot(x2,aes(x=reorder(key,desc(key)),y=value))
+ geom_point(position=position_jitter(width=0.1,height=0))
+ coord_flip() + scale_x_discrete("Category")
これを行うためのより良い方法はありますか?関連する問題は、「1」、「1 a」、「1 a II」のいずれに対してプロットされた場合でも、各値に常に同じ量のジッターが追加されていると便利ですが、私もそうではありません。どこから始めればよいかを確認してください。