我希望能够通过分类变量的所有可能组合对我的数据运行测试,包括仅由一个而不是其他的子集的可能性。以以下数据为例:
dbh <- runif(100,5,40)
err <- runif(100,0,4)
height <- dbh^.8 + err
elevation <- factor(rep(c("L","M","H"),100)[1:100], levels=c("L","M","H",NA))
aspect <- factor(rep(c("E","W"),50), levels=c("E","W",NA))
dat <- data.frame(dbh, height, aspect, elevation)
为了获得所有方面和高程组合的平均 dbh,我尝试了
library(plyr)
result <- ddply( dat, c("elevation","aspect"), summarise, mean(dbh))
但是,这仅取以下子集的平均值:
elevation aspect ..1
1 L E 26.07509
2 L W 23.78510
3 M E 26.72313
4 M W 20.88566
5 H E 19.63125
6 H W 18.60170
我希望它采用以下平均值:
factors <- data.frame(elevation = rep(c("H","M","L",NA),3),
aspect = c(rep("E",4),rep("W",4), rep(NA,4)))
elevation aspect
1 H E
2 M E
3 L E
4 <NA> E
5 H W
6 M W
7 L W
8 <NA> W
9 H <NA>
10 M <NA>
11 L <NA>
12 <NA> <NA>
可以强制 ddply 返回此结果吗?