何らかの理由で、R-2.13.0へのアップグレードとplyr_1.5.1.tar.gzへのアップグレード以降、予想よりも多くの結果が得られています...古いバージョンのplyrでこれを試しました(残念ながらバージョンは上書きしました...)
library(plyr)
dd <-data.frame(matrix(rnorm(216),72,3),c(rep("A",24),rep("B",24),
rep("C",24)),c(rep("J",36),rep("K",36)))
colnames(dd) <- c("v1", "v2", "v3", "dim1", "dim2")
results1 <- ddply(dd, c("dim1","dim2"), function(df) c(m1=mean(df$v1)) )
results2 <- ddply(dd, c("dim1","dim2"), function(df) { c(m1=mean(df$v1),
m2=mean(df$v2)) } )
results3 <- ddply(dd, c("dim1","dim2"), function(df) { c(m1=mean(df$v1),
m2=mean(df$v2), m3=mean(df$v3)) } )
結果2の行数がresults1の2倍で、results3の行数が3倍である理由がわかりません。ここで、元のresults1は2回または3回複製されています。
古いバージョンのplyrを使用して、Rバージョン2.11.0パッチ(2010-05-01 r51907)の便利なコピーを入手しました。期待していた結果は...
> results1
dim1 dim2 m1
1 A J 0.07312783
2 B J -0.22428746
3 B K -0.44205832
4 C K 0.21421456
> results2
dim1 dim2 m1 m2
1 A J 0.07312783 -0.1130148
2 B J -0.22428746 0.4394832
3 B K -0.44205832 -0.1934018
4 C K 0.21421456 -0.0178809
> results3
dim1 dim2 m1 m2 m3
1 A J 0.07312783 -0.1130148 -0.03175873
2 B J -0.22428746 0.4394832 0.21581696
3 B K -0.44205832 -0.1934018 -0.28313530
4 C K 0.21421456 -0.0178809 -0.21948430
Rバージョン2.13.0(2011-04-13)から得られる結果
> results1
dim1 dim2 m1
1 A J -0.2270726
2 B J 0.5860493
3 B K -0.5986129
4 C K 0.3135809
> results2
dim1 dim2 m1 m2
1 A J -0.2270726 -0.19037813
2 B J 0.5860493 -0.05385395
3 B K -0.5986129 0.29404095
4 C K 0.3135809 -0.26744010
5 A J -0.2270726 -0.19037813
6 B J 0.5860493 -0.05385395
7 B K -0.5986129 0.29404095
8 C K 0.3135809 -0.26744010
> results3
dim1 dim2 m1 m2 m3
1 A J -0.2270726 -0.19037813 -0.20448734
2 B J 0.5860493 -0.05385395 -0.11190857
3 B K -0.5986129 0.29404095 -0.27072101
4 C K 0.3135809 -0.26744010 -0.03184949
5 A J -0.2270726 -0.19037813 -0.20448734
6 B J 0.5860493 -0.05385395 -0.11190857
7 B K -0.5986129 0.29404095 -0.27072101
8 C K 0.3135809 -0.26744010 -0.03184949
9 A J -0.2270726 -0.19037813 -0.20448734
10 B J 0.5860493 -0.05385395 -0.11190857
11 B K -0.5986129 0.29404095 -0.27072101
12 C K 0.3135809 -0.26744010 -0.03184949
なぜresults2は4行ではなく8行になり、results3は4行ではなく12行になるのですか?
ありがとう、ショーン