Я пытаюсь использовать функцию суммирования в dplyr для вычисления сводной статистики, используя функцию двух аргументов, которая передает таблицу и имя поля из подключенной базы данных. К сожалению, как только я завершаю функцию суммирования с помощью другой функции, результаты неверны. Конечная таблица - это кадр данных, который не выполняет итерацию по каждой строке. Я покажу вход/выход ниже:Передача аргументов функции dplyr summary
Сводная статистика Функция библиотека (dplyr)
data<-iris
data<- group_by(.data = data,Species)
SummaryStatistics <- function(table, field){
table %>%
summarise(count = n(),
min = min(table[[field]], na.rm = T),
mean = mean(table[[field]], na.rm = T, trim=0.05),
median = median(table[[field]], na.rm = T))
}
SummaryStatistics(data, "Sepal.Length")
выход Таблица - Некорректное, это просто повторяя тот же расчет
Species count min mean median
1 setosa 50 4.3 5.820588 5.8
2 versicolor 50 4.3 5.820588 5.8
3 virginica 50 4.3 5.820588 5.8
Правильный стол/желаемый результат - -Это будет выглядеть стол. Когда я запускаю функцию суммирования вне функции обертки, это то, что она производит.
Species count min mean median
1 setosa 50 4.3 5.002174 5.0
2 versicolor 50 4.9 5.934783 5.9
3 virginica 50 4.9 6.593478 6.5
Надеюсь, это легко понять. Я просто не могу понять, почему сводная статистика работает отлично вне функции-оболочки, но как только я передаю ей аргументы, она будет вычислять одно и то же для каждой строки. Любая помощь будет принята с благодарностью.
Спасибо, Кев
Трудно диагностировать, не зная, как вы используете функцию обертки. Но, предположив, что внутри функции обертки «суммирование» может не знать о факторах группировки, используемых в расчете. Таким образом, он возвратит то же самое резюме для всех строк. – jdobres
@jdobres Я добавлю функцию обертки. Извини за это. – AlphaKevy
Вам понадобится стандартная оценка. Прочтите виньетку 'dplyr' на ней для лучшей идеи. –