here is a reprex, i use dput to generate text which will best transfer example data.
I parameterised you code to take col1 and col6 as strings in first_col_param and second_col_param
# dput(df)
df <- structure(list(gender = c(1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 2L,
2L, 2L, 1L, 1L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 2L, 1L, 2L,
1L, 2L, 2L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 1L, 2L, 2L, 2L), sector = c(2L,
1L, 2L, 5L, 2L, 5L, 5L, 1L, 3L, 2L, 1L, 1L, 2L, 1L, 3L, 5L, 3L,
2L, 3L, 5L, 3L, 1L, 4L, 1L, 4L, 1L, 2L, 1L, 1L, 1L, 4L, 5L, 4L,
5L, 4L, 1L, 4L, 1L, 2L), col1 = c(1L, 1L, NA, NA, NA, NA, NA,
NA, 1L, NA, NA, NA, NA, NA, NA, NA, NA, 1L, NA, NA, NA, 1L, 1L,
1L, NA, 1L, 1L, NA, NA, NA, NA, 1L, NA, NA, NA, NA, 1L, NA, 1L
), col2 = c(1L, 1L, 1L, 1L, 1L, NA, NA, NA, NA, 1L, 1L, 1L, 1L,
1L, NA, NA, NA, 1L, 1L, 1L, NA, 1L, 1L, 1L, 1L, 1L, NA, NA, NA,
1L, 1L, 1L, 1L, 1L, 1L, 1L, NA, NA, NA), col3 = c(1L, 1L, NA,
NA, NA, NA, NA, 1L, NA, NA, NA, NA, NA, NA, NA, NA, 1L, NA, NA,
NA, NA, NA, 1L, 1L, 1L, NA, NA, NA, 1L, NA, NA, 1L, 1L, 1L, 1L,
1L, NA, NA, 1L), col4 = c(1L, NA, NA, NA, NA, NA, NA, NA, NA,
NA, 1L, NA, NA, NA, NA, NA, NA, NA, 1L, NA, NA, NA, NA, NA, NA,
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), col5 = c(1L,
NA, 1L, 1L, 1L, NA, 1L, NA, NA, 1L, NA, 1L, 1L, 1L, NA, NA, NA,
1L, 1L, 1L, NA, 1L, NA, 1L, 1L, 1L, NA, NA, NA, 1L, 1L, NA, NA,
1L, 1L, 1L, NA, NA, NA), col6 = c(1L, 1L, NA, NA, 1L, NA, NA,
1L, NA, NA, 1L, NA, 1L, NA, 1L, NA, 1L, NA, NA, NA, 1L, 1L, 1L,
1L, 1L, NA, NA, NA, 1L, NA, NA, 1L, 1L, 1L, 1L, 1L, NA, NA, 1L
)), row.names = c(NA, -39L), class = c("tbl_df", "tbl", "data.frame"
))
library(expss)
library(tidyverse)
library(rlang)
var_list <- c("col1","col2","col3","col4","col5","col6")
grouping_var <- "sector"
first_col_param <- "col1"
second_col_param <- "col6"
df1<-df[var_list] %>% as.data.frame()
grouping_var <- parse_expr(grouping_var)
var_lab(df[[grouping_var]]) <-""
var_lab(df1[1]) <- ""
var_lab(colnames(df1)[ncol(df1)]) <- ""
data1 <- df %>% select(all_of(grouping_var)) %>% cbind(df1)
tab1 <- eval(parse_expr(paste0("tab_cells(data1,mdset(",
first_col_param ," %to% ",second_col_param,"))"))) %>%
tab_cols(total(), data1[1]) %>%
tab_stat_cpct() %>% tab_pivot()