0

cast()函数非常适合计算聚合值的边距:

cast(df, IDx1+IDx2~IDy1, margins=c('IDx1','IDx2','grand_row'),c(min, mean, max))

问题是我需要使用第二个向量和自定义函数来衡量我的平均值。

当然,ddply()让我将自定义聚合函数应用于我的分组记录:

ddply(d, IDx1+IDx2~IDy1 , function(x) 
c(
min(x$value),
MyFancyWeightedHarmonicMeanFunction(x$value,x$weight),
max(x$value)
)
)

......这太棒了。

但真正能拯救这一天的是能够同时做这两件事,无论是通过调用双向量函数cast()还是以某种方式伪造margins=()变量ddply().

这可能吗?

4

1 回答 1

2

自己计算边距很漂亮:

ddply(d, "IDX1", ...) 
ddply(d, c("IDX1", "IDX2"), ...)
ddply(d, "IDy1", ...)

然后将结果与 结合在一起rbind。将它包装成一个通用函数并不难。

另外,我会将您的原始代码重写为:

ddply(d, IDx1+IDx2~IDy1, summarise, 
  min = min(value),
  wt.mean = MyFancyWeightedHarmonicMeanFunction(value, weight),
  max = max(value)
)
于 2010-01-05T23:29:41.210 回答