function for the ratios on the basis of list of banner

I am trying to create a function to get the below required output. i am looking for a function which i can iterate to the list of data frames.

below function i have tried to create but unable to bind the tables for list of variables.
also i am unable to apply banner here as required.


library(expss)

data<-data.frame(
  gender = c(1,2,1,2,1,2,1,2,2,2,2,1,1,2,2,2,2,1,1,1,1,1,2,1,2,1,2,2,2,1,2,1,2,1,2,1,2,2,2),
  sector = c(3,3,1,2,5,4,4,4,4,3,3,4,3,4,2,1,4,2,3,4,4,4,3,1,2,1,5,5,4,3,1,4,5,2,3,4,5,1,4),
  col1=c(1,1,2,0,2,0,0,2,1,0,0,2,0,3,0,3,0,1,0,3,0,1,1,2,0,1,1,3,0,3,0,1,2,0,3,0,1,0,1),
  col2=c(1,1,1,1,1,0,3,3,2,1,1,1,2,1,0,2,0,1,2,1,0,1,2,1,1,1,0,2,0,1,1,2,1,1,1,1,2,0,0),
  col3=c(1,1,0,0,0,0,2,1,3,2,0,3,0,2,0,2,1,0,2,0,2,0,1,3,1,0,0,0,1,0,3,1,1,1,1,1,3,0,1),
  col4=c(1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0),
  col5=c(1,2,1,1,1,2,1,2,2,1,2,1,1,1,2,2,2,1,1,1,2,1,2,1,1,1,2,2,2,1,1,2,2,1,1,1,2,2,2)
)

data$col1<-factor(data$col1, levels=c(1,2,3,0), labels=c("sale","Ops","MGMT","Mark"))
data$col2<-factor(data$col2, levels=c(1,2,3,0), labels=c("sale","Ops","MGMT","Mark"))
data$col3<-factor(data$col3, levels=c(1,2,3,0), labels=c("sale","Ops","MGMT","Mark"))
data$col4<-factor(data$col4, levels=c(1,0), labels=c("USA","CA"))
data$col5<-factor(data$col5, levels=c(1,0), labels=c("Local","Regional"))

data$gender<-factor(data$gender, levels=c(1,2), labels=c("Male","female"))
data$sector<-factor(data$sector, levels=c(1,2,3,4,5), labels=c("TX","CA","NY","LA","WA"))

data$gender1 <- ifelse(data$gender == "Male",1, NA)
data$total <- ifelse(data$col5 == "Local",1, NA)

val_lab(data$gender1)<-c("GENDER"=1)
val_lab(data$total)<-c("All Market"=1)

lkl <- list(data$gender1,data$total)

 
lkl <- with(data,list(data$gender1,data$total))



Fun1 <- function(df,var_l,var_name_list,Banner){
  
  Fun2 <- function(df,var,var_name,Banner){
    expss::var_lab(df[[var]]) <- ""
    t1 <- expss::cro_cpct(df[var]) %>% t()
    t1[,1] <- var_name[i]
    t1
  }
  freq_list<-list()
  for(i in 1:length(var_l)){
    freq_list[i] <-Fun2(df,var_l[i],var_name_list[i])
    t2<-  do.call(rbind,freq_list)
  }
  t2
}

debug(Fun1)
t1 <- Fun1(df=data,var_l =  c("col1","col2","col2"),var_name_list = c("aa","bb","cc","dd"),lkl)

the required output should look like . i am looking for solution in expss because i am looking for spss like tables output.

Gender All Market
Sale Ops Mgmt Mark Sale Ops Mgmt Mark
AA 33.3 15.3 12.8 38.2 33.3 15.3 12.8 38.2
BB 33.3 15.3 12.8 38.2 33.3 15.3 12.8 38.2
CC 33.3 15.3 12.8 38.2 33.3 15.3 12.8 38.2
Total_cases 99 42 63 21 32 33 16 32

Try learning the htmlTable::htmlTable() or gt package. Your life will be very simple.

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.