У меня есть рабочее решение, но я ищу более чистое и понятное решение, которое, возможно, использует некоторые из новых функций окна 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 и т.д.)? Чисто, я имею в виду без инструкции "do".
Спасибо