我有一个数据框,看起来像这样:
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发布于 2011-09-28 13:54:19
你就快到了。修改代码以使用transform函数。这使您可以在ddply中向data.frame中添加列
weight <- function(x) x/sum(x)
ddply(df, .(date,site), transform, weight=weight(dil))
site date var dil weight
1 1 A 7.4 2 0.40
2 1 A 7.3 3 0.60
3 2 A 6.5 2 0.40
4 2 A 7.3 3 0.60
5 1 B 7.1 1 0.25
6 1 B 7.7 3 0.75
7 2 B 7.7 2 0.40
8 2 B 7.4 3 0.60https://stackoverflow.com/questions/7573144
复制相似问题