【发布时间】:2011-09-27 17:20:23
【问题描述】:
我有一个如下所示的数据框:
site date var dil
1 A 7.4 2
2 A 6.5 2
1 A 7.3 3
2 A 7.3 3
1 B 7.1 1
2 B 7.7 2
1 B 7.7 3
2 B 7.4 3
我需要在此数据框中添加一个名为 wt 的列,其中包含计算加权平均值所需的加权因子。必须为site 和date 的每个组合推导出这个权重因子。
我使用的方法是首先构建一个计算加权因子的函数:
> weight <- function(dil){
dil/sum(dil)
}
然后为site 和date 的每个组合应用函数
> df$wt <- ddply(df,.(date,site),.fun=weight)
但我收到此错误消息:
Error in FUN(X[[1L]], ...) :
only defined on a data frame with all numeric variables
【问题讨论】:
-
试试
df = ddply(df, .(date, site), transform, wt = weight(dil)) -
感谢 Ramnath,效果很好