如何在 R 中的 data.frame 中查找所有独特因素组合的汇总统计信息?

机器算法验证 r 分类数据 聚合 plyr
2022-03-14 13:38:19

我想为 data.frame 中每个独特的因素组合计算 data.frame 中变量的摘要。我应该使用 plyr 来做到这一点吗?我可以使用循环而不是 apply() ;所以只要找出每个独特的组合就足够了。

4个回答

aggregateby例如,从帮助文件中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很有用。它可用于显示跨因子变量级别的数值变量的汇总统计信息。