BÀI TẬP

bw <- read_csv("D:/R/birthwt.csv")
## Rows: 189 Columns: 11
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (11): id, low, age, lwt, race, smoke, ptl, ht, ui, ftv, bwt
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
cont_summary <- bw %>% 
  group_by(low) %>%                             
  summarise(
    n            = n(),
    age_mean     = mean(age, na.rm = TRUE),
    age_sd       = sd(age,   na.rm = TRUE),
    age_median   = median(age, na.rm = TRUE),
    age_q1       = quantile(age, .25, na.rm = TRUE),
    age_q3       = quantile(age, .75, na.rm = TRUE),
    
    lwt_mean     = mean(lwt, na.rm = TRUE),
    lwt_sd       = sd(lwt,   na.rm = TRUE),
    lwt_median   = median(lwt, na.rm = TRUE),
    lwt_q1       = quantile(lwt, .25, na.rm = TRUE),
    lwt_q3       = quantile(lwt, .75, na.rm = TRUE),
    
    bwt_mean     = mean(bwt, na.rm = TRUE),
    bwt_sd       = sd(bwt,   na.rm = TRUE),
    bwt_median   = median(bwt, na.rm = TRUE),
    bwt_q1       = quantile(bwt, .25, na.rm = TRUE),
    bwt_q3       = quantile(bwt, .75, na.rm = TRUE)
  )

cont_summary
## # A tibble: 2 × 17
##     low     n age_mean age_sd age_median age_q1 age_q3 lwt_mean lwt_sd
##   <dbl> <int>    <dbl>  <dbl>      <dbl>  <dbl>  <dbl>    <dbl>  <dbl>
## 1     0   130     23.7   5.58         23   19       28     133.   31.7
## 2     1    59     22.3   4.51         22   19.5     25     122.   26.6
## # ℹ 8 more variables: lwt_median <dbl>, lwt_q1 <dbl>, lwt_q3 <dbl>,
## #   bwt_mean <dbl>, bwt_sd <dbl>, bwt_median <dbl>, bwt_q1 <dbl>, bwt_q3 <dbl>
smoke_summary <- bw %>% 
  count(low, smoke) %>%                         
  group_by(low) %>% 
  mutate(percent = round(100 * n / sum(n), 1))  

smoke_summary
## # A tibble: 4 × 4
## # Groups:   low [2]
##     low smoke     n percent
##   <dbl> <dbl> <int>   <dbl>
## 1     0     0    86    66.2
## 2     0     1    44    33.8
## 3     1     0    29    49.2
## 4     1     1    30    50.8
race_summary <- bw %>% 
  count(low, race) %>% 
  group_by(low) %>% 
  mutate(percent = round(100 * n / sum(n), 1))

race_summary
## # A tibble: 6 × 4
## # Groups:   low [2]
##     low  race     n percent
##   <dbl> <dbl> <int>   <dbl>
## 1     0     1    73    56.2
## 2     0     2    15    11.5
## 3     0     3    42    32.3
## 4     1     1    23    39  
## 5     1     2    11    18.6
## 6     1     3    25    42.4