繁体   English   中英

从 group_by 和 summary 获取广泛的摘要

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM