У меня есть рабочее решение, но я ищу более чистое и понятное решение, которое, возможно, использует некоторые из новых функций окна dplyr.Использование функций окна dplyr для вычисления процентилей
Используя набор данных mtcars, если я хочу посмотреть на 25-й, 50-й, 75-й процентили и среднее число миль на галлон («миль на галлон») на количество цилиндров («цил»), я использую следующий код:
library(dplyr)
library(tidyr)
# load data
data("mtcars")
# Percentiles used in calculation
p <- c(.25,.5,.75)
# old dplyr solution
mtcars %>% group_by(cyl) %>%
do(data.frame(p=p, stats=quantile(.$mpg, probs=p),
n = length(.$mpg), avg = mean(.$mpg))) %>%
spread(p, stats) %>%
select(1, 4:6, 3, 2)
# note: the select and spread statements are just to get the data into
# the format in which I'd like to see it, but are not critical
есть ли способ, что я могу сделать это более чисто с dplyr, используя некоторые из суммарных функций (n_tiles, percent_rank и т.д.)? Чисто, я имею в виду без заявления «сделать».
Спасибо
Я должен добавить, что этот код также использует пакет «tidyr», в котором функция «спред» поступает от – dreww2