Как использовать 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 в этот фрейм данных, который содержит весовой коэффициент, необходимый для рассчитать средневзвешенное значение. Этот весовой коэффициент должен быть получен для каждой комбинации сайта и даты .

Подход, который я использую, состоит в том, чтобы сначала создать функцию, которая вычисляет коэффициент взвешивания:

> weight <- function(dil){
                    dil/sum(dil)
                     }

затем применить функцию для каждой комбинации сайта и даты

> df$wt <- ddply(df,.(date,site),.fun=weight)

, но я получаю это сообщение об ошибке:

Error in FUN(X[[1L]], ...) : 
  only defined on a data frame with all numeric variables
11
задан joran 27 September 2011 в 17:25
поделиться