Answers:
虽然我认为aggregate
这可能是您正在寻找的解决方案,但是如果您想创建所有可能因素组合的明确列表,expand.grid
则可以为您完成。例如
> expand.grid(height = seq(60, 80, 5), weight = seq(100, 300, 50),
sex = c("Male","Female"))
height weight sex
1 60 100 Male
2 65 100 Male
...
30 80 100 Female
31 60 150 Female
然后,您可以遍历结果数据框中的每一行,以从原始数据中提取记录。
这是plyr解决方案,它的优点是返回多个汇总统计信息并为长时间计算生成进度条:
library(ez) #for a data set
data(ANT)
cell_stats = ddply(
.data = ANT #use the ANT data
, .variables = .(cue,flanker) #uses each combination of cue and flanker
, .fun = function(x){ #apply this function to each combin. of cue & flanker
to_return = data.frame(
, acc = mean(x$acc)
, mrt = mean(x$rt[x$acc==1])
)
return(to_return)
}
, .progress = 'text'
)
我个人喜欢cast()
reshape软件包中的,因为它很简单:
library(reshape)
cast(melt(tips), sex ~ smoker | variable, c(sd,mean, length))
在library(doBy)
还有的summaryBy()
功能,例如,
summaryBy(DV1 + DV2 ~ Height+Weight+Sex,data=my.data)