请考虑以下事项:
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))
。
这样的事情存在吗?
答案 0 :(得分:4)
您在基地R中寻找aggregate
,但有许多选项可用。使用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
答案 1 :(得分:1)
查看表包,它允许您在公式语句中指定表的形状,样式和汇总度量。如果您使用如下公式:
group + (n=1) ~ (var1 + var2)*(mean+sd)
然后,您将获得一个表格,其中每个group
级别都有一行,而底部有一行,那么这些列将是var1
和var2
的平均和标准偏差(共4列)。
还有其他选项可用于格式化列和标题,您可以使用自己创建的函数来执行摘要,可以执行计数和百分比以及许多其他操作。