Преобразование результатов квантилей в имена столбцов - PullRequest
1 голос
/ 31 января 2020

Итак, у меня есть набор данных, который выглядит примерно так:

df <- structure(list(location_id = c(7451, 7451, 7451, 7451, 7451, 
                               7451, 7451, 7451, 7451, 7451, 7451, 7451, 7451, 7452, 7452, 7452, 
                               7452, 7452, 7452, 7452, 7452, 7452, 7452, 7452, 7452), score = c(55.34, 
                                                                                                14.9, 35.13, 6.65, 35.34, 5.86, 7.1, 42.84, 36.57, 6.51, 67.87, 
                                                                                                30.75, 52.29, 39.02, 37.58, 35.45, 11.22, 6.68, 9.77, 20.15, 
                                                                                                18.61, 32.96, 54.31, 23.79, 9.45)), row.names = c(NA, 25L), class = "data.frame")

Теперь я знаю, как получить квантильные результаты, это достаточно просто:

quantile(df$score)

Но что я пытаюсь сделать, это преобразовать квантили в имена столбцов, сгруппированных по location_id. Таким образом, окончательный результат будет выглядеть примерно так:

+-------------+------+-------+-------+-------+-------+
| location_id |  0%  |  25%  |  50%  |  75%  | 100%  |
+-------------+------+-------+-------+-------+-------+
|        7451 | 5.86 |   7.1 | 35.13 | 42.84 | 67.87 |
|        7452 | 6.68 | 10.86 | 21.97 | 35.98 | 54.31 |
+-------------+------+-------+-------+-------+-------+

1 Ответ

2 голосов
/ 31 января 2020

Мы можем использовать unnest_wider после summarise в list столбце

library(dplyr)
library(tidyr)
df %>%
   group_by(location_id) %>%
   summarise(out = list(quantile(score))) %>% 
   unnest_wider(c(out))
# A tibble: 2 x 6
#  location_id  `0%` `25%` `50%` `75%` `100%`
#        <dbl> <dbl> <dbl> <dbl> <dbl>  <dbl>
#1        7451  5.86   7.1  35.1  42.8   67.9
#2        7452  6.68  10.9  22.0  36.0   54.3

Или используя data.table

library(data.table)
setDT(df)[, as.list(quantile(score)), location_id]
#    location_id   0%     25%   50%     75%  100%
#1:        7451 5.86  7.1000 35.13 42.8400 67.87
#2:        7452 6.68 10.8575 21.97 35.9825 54.31
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...