[英]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.