Я пытаюсь создать взвешенное среднее в стиле «группа по» в R. С некоторым базовым средним значением следующий код (с использованием пакета plyr от Hadley) работал хорошо.
ddply(mydf,.(period),mean)
Если я использую тот же подход с weighted.mean, я получаю следующую ошибку «x и w должны иметь одинаковую длину», которую я не понимаю, потому что часть weighted.mean работает вне ddply.
weighted.mean(mydf$mycol,mydf$myweight) # works just fine
ddply(mydf,.(period),weighted.mean,mydf$mycol,mydf$myweight) # returns the erros described above
ddply(mydf,.(period),weighted.mean(mydf$mycol,mydf$myweight)) # different code same story
Я думал написать собственную функцию вместо weighted.mean, а затем передать ее ddply или даже написать что-то новое с нуля с подмножеством. В моем случае это будет слишком много работы, надеюсь, но должно быть более разумное решение с тем, что уже есть.
спасибо за любые предложения заранее!