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:
- Matching an exact value
- Matching bigger or smaller then one number
- Matching values between two numbers
- 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())