сгруппировать в R, ddply с weighted.mean
12542 просмотра
2 ответа
Я пытаюсь сделать взвешенное среднее в стиле «группа по» в 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 или даже о написании чего-то нового с нуля с подмножеством. В моем случае это будет слишком много работы, надеюсь, но должно быть более разумное решение с тем, что уже есть.
Спасибо за любые предложения заранее!
Автор: Matt Bannert Источник Размещён: 13.11.2019 11:42Ответы (2)
17 плюса
Используйте анонимную функцию:
> ddply(iris,"Species",function(X) data.frame(wmn=weighted.mean(X$Sepal.Length,
+ X$Petal.Length),
+ mn=mean(X$Sepal.Length)))
Species wmn mn
1 setosa 5.016963 5.006
2 versicolor 5.978075 5.936
3 virginica 6.641535 6.588
>
Это вычисляет взвешенное среднее значение Sepal.Length (взвешенное по Petal.Length), а также невзвешенное среднее и возвращает оба значения.
Автор: Dirk Eddelbuettel Размещён: 18.07.2010 09:4420 плюса
Используйте суммирование (или суммирование):
ddply(iris, "Species", summarise,
wmn = weighted.mean(Sepal.Length, Petal.Length),
mn = mean(Sepal.Length))
Автор: hadley
Размещён: 19.07.2010 02:01
Вопросы из категории :
- r Как получить доступ к последнему значению в векторе?
- r Пакеты оптимизации для R
- r Есть ли у R такие операторские операции, как Perl qw ()?
- r Библиотека / инструмент для рисования тройных / треугольных графиков
- r Участки без заголовков / надписей в R
- r Расчет скользящей средней
- r Режим Emacs ESS - вкладка для области комментариев
- r Преобразование данных из многих строк во многие столбцы
- r Проверить, содержит ли вектор данный элемент
- r Поиск всех позиций для нескольких элементов в векторе
- group-by Как конкатенировать строки поля строки в запросе PostgreSQL?
- group-by Есть ли разница между GROUP BY и DISTINCT?
- group-by MySQL Query GROUP BY день / месяц / год
- group-by Группировать по нескольким столбцам
- group-by Выберите 3 самые последние записи, в которых значения одного столбца различны
- group-by MySQL. Выбор столбца не в группе.
- group-by Получение последней записи в каждой группе - MySQL
- group-by Как группировать по неделям в MySQL?
- group-by MySQL - как получить столбцы в той же строке, что и значения, возвращаемые min / mx
- group-by SQL Server Update Group по