Programming with dplyr
Dr. Chester Ismay
Educator, Data Scientist, and R/Python Consultant
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
# 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
as_name()
:=
mutate()
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))) }
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
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)
Programming with dplyr