Как использовать ddply для добавления столбца в фрейм данных?

у меня есть фрейм данных, который выглядит так:

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

1 ответов


вы почти там. Измените код, чтобы использовать