1## ---- echo = FALSE, message = FALSE------------------------------------------- 2knitr::opts_chunk$set(collapse = T, comment = "#>") 3options(tibble.print_min = 4L, tibble.print_max = 4L) 4set.seed(1014) 5 6## ----setup, message = FALSE--------------------------------------------------- 7library(dplyr) 8 9## ---- results = FALSE--------------------------------------------------------- 10starwars[starwars$homeworld == "Naboo" & starwars$species == "Human", ,] 11 12## ---- results = FALSE--------------------------------------------------------- 13starwars %>% filter(homeworld == "Naboo", species == "Human") 14 15## ----------------------------------------------------------------------------- 16df <- data.frame(x = runif(3), y = runif(3)) 17df$x 18 19## ---- results = FALSE--------------------------------------------------------- 20var_summary <- function(data, var) { 21 data %>% 22 summarise(n = n(), min = min({{ var }}), max = max({{ var }})) 23} 24mtcars %>% 25 group_by(cyl) %>% 26 var_summary(mpg) 27 28## ---- results = FALSE--------------------------------------------------------- 29for (var in names(mtcars)) { 30 mtcars %>% count(.data[[var]]) %>% print() 31} 32 33## ---- results = FALSE--------------------------------------------------------- 34summarise_mean <- function(data, vars) { 35 data %>% summarise(n = n(), across({{ vars }}, mean)) 36} 37mtcars %>% 38 group_by(cyl) %>% 39 summarise_mean(where(is.numeric)) 40 41## ---- results = FALSE--------------------------------------------------------- 42vars <- c("mpg", "vs") 43mtcars %>% select(all_of(vars)) 44mtcars %>% select(!all_of(vars)) 45 46## ----------------------------------------------------------------------------- 47mutate_y <- function(data) { 48 mutate(data, y = a + x) 49} 50 51## ----------------------------------------------------------------------------- 52my_summary_function <- function(data) { 53 data %>% 54 filter(x > 0) %>% 55 group_by(grp) %>% 56 summarise(y = mean(y), n = n()) 57} 58 59## ----------------------------------------------------------------------------- 60#' @importFrom rlang .data 61my_summary_function <- function(data) { 62 data %>% 63 filter(.data$x > 0) %>% 64 group_by(.data$grp) %>% 65 summarise(y = mean(.data$y), n = n()) 66} 67 68## ----------------------------------------------------------------------------- 69my_summarise <- function(data, group_var) { 70 data %>% 71 group_by({{ group_var }}) %>% 72 summarise(mean = mean(mass)) 73} 74 75## ----------------------------------------------------------------------------- 76my_summarise2 <- function(data, expr) { 77 data %>% summarise( 78 mean = mean({{ expr }}), 79 sum = sum({{ expr }}), 80 n = n() 81 ) 82} 83 84## ----------------------------------------------------------------------------- 85my_summarise3 <- function(data, mean_var, sd_var) { 86 data %>% 87 summarise(mean = mean({{ mean_var }}), sd = sd({{ sd_var }})) 88} 89 90## ----------------------------------------------------------------------------- 91my_summarise4 <- function(data, expr) { 92 data %>% summarise( 93 "mean_{{expr}}" := mean({{ expr }}), 94 "sum_{{expr}}" := sum({{ expr }}), 95 "n_{{expr}}" := n() 96 ) 97} 98my_summarise5 <- function(data, mean_var, sd_var) { 99 data %>% 100 summarise( 101 "mean_{{mean_var}}" := mean({{ mean_var }}), 102 "sd_{{sd_var}}" := sd({{ sd_var }}) 103 ) 104} 105 106## ----------------------------------------------------------------------------- 107my_summarise <- function(.data, ...) { 108 .data %>% 109 group_by(...) %>% 110 summarise(mass = mean(mass, na.rm = TRUE), height = mean(height, na.rm = TRUE)) 111} 112 113starwars %>% my_summarise(homeworld) 114starwars %>% my_summarise(sex, gender) 115 116## ----------------------------------------------------------------------------- 117my_summarise <- function(data, summary_vars) { 118 data %>% 119 summarise(across({{ summary_vars }}, ~ mean(., na.rm = TRUE))) 120} 121starwars %>% 122 group_by(species) %>% 123 my_summarise(c(mass, height)) 124 125## ----------------------------------------------------------------------------- 126my_summarise <- function(data, group_var, summarise_var) { 127 data %>% 128 group_by(across({{ group_var }})) %>% 129 summarise(across({{ summarise_var }}, mean)) 130} 131 132## ----------------------------------------------------------------------------- 133my_summarise <- function(data, group_var, summarise_var) { 134 data %>% 135 group_by(across({{ group_var }})) %>% 136 summarise(across({{ summarise_var }}, mean, .names = "mean_{.col}")) 137} 138 139## ---- results = FALSE--------------------------------------------------------- 140for (var in names(mtcars)) { 141 mtcars %>% count(.data[[var]]) %>% print() 142} 143 144## ---- results = FALSE--------------------------------------------------------- 145mtcars %>% 146 names() %>% 147 purrr::map(~ count(mtcars, .data[[.x]])) 148 149## ---- eval = FALSE------------------------------------------------------------ 150# library(shiny) 151# ui <- fluidPage( 152# selectInput("var", "Variable", choices = names(diamonds)), 153# tableOutput("output") 154# ) 155# server <- function(input, output, session) { 156# data <- reactive(filter(diamonds, .data[[input$var]] > 0)) 157# output$output <- renderTable(head(data())) 158# } 159 160