dumbcode/search_for_levels.R

# 
data(example_df)
example_df$study_level
example_df$sex
lvl <- levels(example_df$study_level)
lvl2 <- levels(example_df$sex)


find_levels <- function(variable) {
  if( is_maybe_factor(variable, 6)){
    if(class(variable)[1] %in% c("factor","ordered"))
      return(levels(variable))
    else {
      raw_levels <- unique(variable)
      # order
      return(as.character(raw_levels[order(raw_levels)]))
    }
  } else {
    return(NA)
  }
}


# Pour chaque rechecher les levels
# Si pas factor ou ordered, mettre NA
list_level <- lapply(example_df, find_levels)

# Trouver le nombre max de level
max_level <- max(sapply(list_level, length))

# Ajouter des NA à ceux qui n'ont pas le max
list_level2 <- lapply(list_level, function(x){
  nb_level <- length(x)
  x <- c(x, rep(NA, (max_level - nb_level)))
  return(x)
    
})

list_t <- as.list(as.data.frame(t(as.data.frame(list_level2))))

list_t2 <- rep(list_t, each=2)

names(list_t2) <- paste0(rep(c("flevel","flabel"), max_level), rep(1:max_level, each=2))

as.data.frame(list_t2)
jomuller/vartors documentation built on May 19, 2019, 7:26 p.m.