3
最近、因子の相互作用に基づいていくつかのデータをグラフ化しなければならなかったが、私はこれがRにあるべきであると感じるよりも困難であることが分かった。私は30の数のベクトルと1組の要素を持っているとしましょう。ファクタインタラクションを分離する方法
n <- runif(30, min=0, max=10)
a <- gl(2, 1, 30)
b <- gl(6, 2, 30)
そして、それぞれの要素の組み合わせごとに平均が必要です。
y <- tapply(n, a:b, mean)
は今、私はa
の2つの値のそれぞれのパネルを持っているこれらの手段をプロットするために、格子xyplotを使用します。手段はy
の値で、b
の係数はx
の値です。在庫xyplot式
mydf
が
tapply上記から計算した列
y
、
b
、及び、
a
有するデータフレームである
xyplot(y ~ b | a, data=mydf)
ようなものであろう。しかし、私の問題は、相互作用する要素をどのように解消するかです。これは私がやったことです。今
factorSplit <- strsplit(names(y), ":")
a1 <- sapply(factorSplit, function(x) {x[1]})
b1 <- sapply(factorSplit, function(x) {x[2]})
mydf <- data.frame(y, b1, a1)
mydf
は
> mydf
y b1 a1
1:1 3.856797 1 1
1:2 3.487181 2 1
1:3 8.411425 3 1
1:4 3.757709 4 1
1:5 4.982970 5 1
1:6 6.480346 6 1
2:1 2.778864 1 2
2:2 4.390511 2 2
2:3 7.119926 3 2
2:4 4.707945 4 2
2:5 5.546894 5 2
2:6 8.984631 6 2
を持って、私は
xyplot(y ~ b1 | a1, mydf, layout=c(1,2))
にプロットすることができます。しかし、私はsapplyが過剰ですnames(y)
のstrsplitでこのビジネスを感じるし、その後。 で作成された因子相互作用を回復するためのより直接的な方法があるはずです。。
あなたは 'A'と 'B'の列を保持したいので、それは' tapply' 'よりも、ここでaggregate'使用することをお勧めします:' Y <を - 集約(N〜A + B、NULL、平均値) ' – MrFlick
' aggregate'はかなりいいです。基本的なグループ化があまりにも混乱してしまうと、私はたいてい 'dplyr'に目を向けます。これはかなり簡単です。この場合、 'data_frame(n、a、b)%>%group_by(a、b)%>%summarize(y =平均(n))' – alistaire
ソリューションで質問を更新するのではなく、下の答え(あなた自身の質問に答えるのはいいです)は、質問がもはや答えられないように見えるからです。 – MrFlick