Filtering tibble using a dplyr

Dplyr is not super intuitive for me, so I made this quick example of how to use it

Use list objects to filter a tibble

Lists are good format to keep data, which are more complicated then a simple table.
Therefore can be used to store different parameters which are then applied to filter tabular data.

Operations:

  1. Matching an exact value
  2. Matching bigger or smaller then one number
  3. Matching values between two numbers
  4. Grouping and summarizing the data
# R
install.packages("tidyverse")
install.packages("dplyr")

library(tidyverse)

test_data<-tibble(grouping_col_01=c("one","one", "one", "two","two"),
                  grouping_col_02=c("A","B","A","B","A"),
                  numbers=c(1,2,3,4,5),
                  letters=c("a","b","c","d","e")
)

parameter<-list(matching_numbers = c(1,2,3,4),
                number_range = c(2,4),
                one_number = 3,
                letter = "b"
)

grouping_cols<-grep("grouping",colnames(test_data))

filtered_output<-test_data %>% 
  dplyr::filter(numbers %in% parameter[["matching_numbers"]]) %>% # keep matching numbers
  dplyr::filter(between(numbers, # keep only numbers inside a range
                        min(parameter[["number_range"]]),
                        max(parameter[["number_range"]]))
  ) %>% 
  dplyr::filter(numbers<parameter[["one_number"]]) %>%  # keep smaller than upper limit number
  dplyr::filter(letters==parameter[["letter"]]) # keep matching letter

grouping_cols<-grep("grouping",colnames(test_data))

test_data %>%
  group_by(across(all_of(grouping_cols))) %>% 
  summarise(n=n())