#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>