Rlang sulla sedia a dondolo

Programmare con dplyr

Dr. Chester Ismay

Educator, Data Scientist, and R/Python Consultant

Nome colonna di summarize strano

grouped_mean_by_column <- function(group_col, col_to_mean) {
  joined %>% 
    group_by(!!enquo(group_col)) %>% 
    summarize(mean(!!enquo(col_to_mean)))
}
grouped_mean_by_column(group_col = year, col_to_mean = perc_cvd_crd_70)
# A tibble: 17 × 2
    year `mean(perc_cvd_crd_70)`
   <dbl>                   <dbl>
 1  2000                    15.8
 2  2001                    23.3
...
17  2016                    15.8
Programmare con dplyr

Come lo vorremmo

# A tibble: 17 × 2
    year mean_of_perc_cvd_crd_70
   <dbl>                   <dbl>
 1  2000                    15.8
 2  2001                    23.3
 3  2002                    15  
 4  2003                    14.8
 5  2004                    21.1
...
15  2014                    16.7
16  2015                    16.0
17  2016                    15.8
Programmare con dplyr

as_name() e l’operatore walrus :=

as_name()

  • Converte un nome di colonna non quotato/defuso in stringa

:=

  • Consente una variabile a sinistra in mutate()
Programmare con dplyr

Chiudere la funzione

grouped_mean_by_column <- function(.data, group_col, col_to_mean) {

name_of_col_to_mean <- as_name(enquo(col_to_mean))
new_col_name <- paste0("mean_of_", name_of_col_to_mean)
.data %>% group_by(!!enquo(group_col)) %>%
summarize(!!new_col_name := mean(!!enquo(col_to_mean))) }
Programmare con dplyr

Applicare la funzione completa

grouped_mean_by_column(.data = joined,
                       group_col = continent,
                       col_to_mean = perc_rural_pop)
# A tibble: 5 × 2
  continent mean_of_perc_rural_pop
  <fct>                      <dbl>
1 Africa                      65.1
2 Americas                    28.1
3 Asia                        31.9
4 Europe                      30.1
5 Oceania                     14.1
Programmare con dplyr

Puliamo un po’

grouped_mean_by_column <- function(.data, group_col, col_to_mean) {
  name_of_col_to_mean <- as_name(enquo(col_to_mean))
  new_col_name <- paste0("mean_of_", name_of_col_to_mean)
  .data %>% 
    group_by({{ group_col }}) %>% 
    summarize(!!new_col_name := mean({{ col_to_mean }}))
}

joined %>% grouped_mean_by_column(group_col = continent, col_to_mean = perc_rural_pop)
Programmare con dplyr

Passons à la pratique !

Programmare con dplyr

Preparing Video For Download...