[英]Getting extensive summary from group_by and summary
我想知道从最后一次接种疫苗到进入 ICU 的中位时间是多长时间。 我有一个如下所示的数据集:
ID <- c(1:20)
Group <- c("1. vacc + unvacc", "2. vacc", "3. vacc", "1. vacc + unvacc", "2. vacc", "3. vacc", "1. vacc + unvacc", "2. vacc", "3. vacc",
"1. vacc + unvacc", "2. vacc", "3. vacc", "1. vacc + unvacc", "2. vacc", "3. vacc", "1. vacc + unvacc", "2. vacc", "3. vacc",
"1. vacc + unvacc", "2. vacc")
Status <- c("Dead", "Alive", "Dead", "Alive", "Dead", "Alive", "Dead", "Alive", "Dead", "Alive", "Dead", "Alive",
"Dead", "Alive", "Dead", "Alive", "Dead", "Alive", "Dead", "Alive")
Months <- c(5, 6, 1, 2, 3, 5, 2, 8, 2, 5, 5, 6, 1, 2, 3, 5, 2, 8, 2, 5)
我努力了:
df %>%
group_by(Group, Status) %>%
summarise(ICU_median = median(Months)) %>%
pivot_wider(
names_from = Status,
values_from = ICU_median
) %>%
adorn_totals("col", name = "All") %>%
adorn_totals("row", name = "Overall") %>%
pivot_longer(
cols= -Group,
names_to = "Status",
values_to = "ICU median"
)
这给出了以下 output:
`summarise()` has grouped output by 'Group'. You can override using the `.groups` argument.
# A tibble: 12 x 3
Group Status `ICU median`
<chr> <chr> <dbl>
1 1. vacc + unvacc Alive 5
2 1. vacc + unvacc Dead 2
3 1. vacc + unvacc All 7
4 2. vacc Alive 5.5
5 2. vacc Dead 3
6 2. vacc All 8.5
7 3. vacc Alive 6
8 3. vacc Dead 2
9 3. vacc All 8
10 Overall Alive 16.5
11 Overall Dead 7
12 Overall All 23.5
这几乎是我想要的,但还远远不够——因为我想知道每个亚组从最后一次疫苗接种到 ICU 入院的中位数月份。 我的问题是,“全部”组被加在一起,可能来自adorn_totals
但我不知道如何加和除以 2,因为我不想要总和值,而是 1 内所有的中位数。vacc +解封。 此外,是否可以为每行/子组再插入两列 25. 和 75. 分位数? (这对我根本不起作用)。 所需的 output 将是:
`summarise()` has grouped output by 'Group'. You can override using the `.groups` argument.
# A tibble: 12 x 3
Group Status `ICU median` 25. quartile 75. quartile
<chr> <chr> <dbl> <dbl> <dbl>
1 1. vacc + unvacc Alive 5 x y
2 1. vacc + unvacc Dead 2 z d
3 1. vacc + unvacc All **3.5**
4 2. vacc Alive 5.5
5 2. vacc Dead 3
6 2. vacc All **4.25**
7 3. vacc Alive 6
8 3. vacc Dead 2
9 3. vacc All **4**
10 Overall Alive Average median for all alive
11 Overall Dead Average median for all dead
12 Overall All Average median for all
像这样的东西? 请说清楚:
library(dplyr)
library(tidyr)
library(janitor)
df %>%
group_by(Group, Status) %>%
summarise(ICU_median = median(Months)) %>%
pivot_wider(
names_from = Status,
values_from = ICU_median
) %>%
adorn_totals("col", name = "All") %>%
rowwise() %>%
mutate(median_x = median(c(Alive, Dead))) %>%
pivot_longer(
cols= -Group,
names_to = "Status",
values_to = "ICU median"
) %>%
mutate(Group= ifelse(Status == "median_x", "Overall", Group)) %>%
arrange(Group) %>%
rename(ICU_median = `ICU median`) %>%
mutate(ICU_median = ifelse(Status == "All", ICU_median/2, ICU_median))
# A tibble: 12 x 3
Group Status ICU_median
<chr> <chr> <dbl>
1 1. vacc + unvacc Alive 5
2 1. vacc + unvacc Dead 2
3 1. vacc + unvacc All 3.5
4 2. vacc Alive 5.5
5 2. vacc Dead 3
6 2. vacc All 4.25
7 3. vacc Alive 6
8 3. vacc Dead 2
9 3. vacc All 4
10 Overall median_x 3.5
11 Overall median_x 4.25
12 Overall median_x 4
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.