我想为 data.frame 中每个独特的因素组合计算 data.frame 中变量的摘要。我应该使用 plyr 来做到这一点吗?我可以使用循环而不是 apply() ;所以只要找出每个独特的组合就足够了。
如何在 R 中的 data.frame 中查找所有独特因素组合的汇总统计信息?
机器算法验证
r
分类数据
聚合
plyr
2022-03-14 13:38:19
4个回答
见aggregate
和by
。例如,从帮助文件中aggregate
:
## Compute the averages according to region and the occurrence of more
## than 130 days of frost.
aggregate(state.x77,
list(Region = state.region,
Cold = state.x77[,"Frost"] > 130),
mean)
虽然我认为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'
)
除了其他建议之外,您可能会发现包describe.by()
中的功能psych
很有用。它可用于显示跨因子变量级别的数值变量的汇总统计信息。