Вложенные группы в таблице с использованием dplyr

#r #dplyr

#r #dplyr

Вопрос:

У меня есть следующий набор данных. Мне нужно рассчитать сводную статистику по подгруппам.

 year <- rep(2014:2018, length.out = 100)
group <- rep(1:7, length.out = 100)
clin <- rep(0:1, length.out = 100)
value <- sample(100, replace = T)

dta <- data.frame(year = year, group = group, clin = clin, value = value)

table <- dta  %>% group_by(year, group,  clin) %>% 
  summarize(median = median(value),
            min=min(value), max=max(value))
 

Все, что мне нужно сделать сейчас, это создать вложенные группы столбцов. То есть я хотел бы видеть сводную статистику (медиана, минимум, максимум). В ГОД рядом друг с другом и с названием группы, указывающим год. Этот последний шаг — это то, с чем мне нужна помощь.

Спасибо.

Ответ №1:

Может быть, это:

 library(tidyverse)
#Code
new <- dta  %>% group_by(year, group,  clin) %>% 
  summarize(median = median(value),
            min=min(value), max=max(value)) %>%
  pivot_wider(names_from = year,values_from=c(median,min,max))
 

Вывод:

 # A tibble: 14 x 17
# Groups:   group [7]
   group  clin median_2014 median_2015 median_2016 median_2017 median_2018 min_2014
   <int> <int>       <dbl>       <dbl>       <dbl>       <dbl>       <dbl>    <int>
 1     1     0        55          84          86          46.5        62.5       25
 2     1     1        28          63          21.5        10          42         28
 3     2     0        68          59          42          26.5       100         68
 4     2     1        55          57.5        36          28          20.5       52
 5     3     0        96          82          65          86          54         96
 6     3     1        30          19          30           6.5        61.5       30
 7     4     0        68.5        48          45          75          48.5       61
 8     4     1        11          99          38          91.5        96         11
 9     5     0        67          27           3          77          83.5       67
10     5     1        17          56.5        17          87          17          6
11     6     0        93          24.5        26.5        62          68         93
12     6     1        80          63          19           1          53         71
13     7     0        39          57.5        58          44           8         11
14     7     1        47          27          41          66.5        33         47
# ... with 9 more variables: min_2015 <int>, min_2016 <int>, min_2017 <int>,
#   min_2018 <int>, max_2014 <int>, max_2015 <int>, max_2016 <int>, max_2017 <int>,
#   max_2018 <int>