0

考虑以下:

df = data.frame(x=1:10, y = (1:10) %% 2 == 0)

我想打电话给类似的东西

summarize(x ~ y, data = df)

并获得类似的输出

       FALSE TRUE
Mean   5     6
Count  5     5

基本上,我想要类似xtabs但具有可定制输出的东西。例如xtabs(x ~ y, data = df, FUN = c(mean, length))

这样的事情存在吗?

4

2 回答 2

4

aggregate在 base R 中寻找,但有许多可用选项。使用aggregate,您必须做一些工作才能使事情变得正确,但这是基本思想:

> aggregate(x ~ y, df, function(x) cbind(mean(x), length(x)))
      y x.1 x.2
1 FALSE   5   5
2  TRUE   6   5

为了让您开始使用替代方案,这里是“data.table”:

> library(data.table)
> DT <- data.table(df)
> DT[, list(Mean = mean(x), Count = length(x)), by = "y"]
       y Mean Count
1: FALSE    5     5
2:  TRUE    6     5

和 plyr:

> library(plyr)
> ddply(df, .(y), summarize, Mean = mean(x), Count = length(x))
      y Mean Count
1 FALSE    5     5
2  TRUE    6     5
于 2013-03-02T16:23:49.430 回答
1

看一下表格包,它可以让您在公式语句中指定表格的形状、样式和汇总度量。如果您使用如下公式:

group + (n=1) ~ (var1 + var2)*(mean+sd)

然后你会得到一个表格,每个级别都有group一行,底部有一个总行,然后列将是和的平均值和标准差var1var2总共 4 列)。

还有其他选项可用于设置列和标题的格式,您可以使用自己创建的函数进行汇总,可以进行计数和百分比,以及许多其他事情。

于 2013-03-02T19:04:43.347 回答