00-test.R

library(tidyverse)
library(readxl)
library(autostudy)

var_type_map <- tibble::tribble(
  ~type, ~import_fn,
  "numeric", "convert_to_numeric",
  "categorical", "convert_to_categorical",
  "logical", "convert_to_logical",
  "date", "convert_to_date"
)

var_list <- read_excel("template.xlsx", sheet = "var_list")

tables <- unique(var_list$table)

table_name <- tables[[1]]
vars <-
  var_list %>%
  filter(table == table_name)

dat <- read_excel("template.xlsx", sheet = table_name, col_types = "text")


for (n in seq(1, nrow(vars))) {
  var_type <- vars$type[[n]]
  var_categories <- vars$categories[[n]]
  var_date_format <- vars$date_format[[n]]

  print(var_type)

  if (var_type == "numeric") {
    dat[[ vars$variable[[n]] ]] <- convert_to_numeric(dat[[ vars$variable[[n]] ]])
  } else if (var_type == "categorical") {
    # manage categorical
    dat[[ vars$variable[[n]] ]] <-
      convert_to_categorical(dat[[ vars$variable[[n]] ]], var_categories)
  } else if (var_type == "binary") {
    # manage logical
    dat[[ vars$variable[[n]] ]] <- convert_to_logical(dat[[ vars$variable[[n]] ]])
  } else if (var_type == "date") {
    # manage date
    dat[[ vars$variable[[n]] ]] <-
      convert_to_date(dat[[ vars$variable[[n]] ]], var_date_format)
  }
}




# need tending
convert_one <- function(var, df_list) {

  x <- df_list[[ var["table"] ]][[ var["variable"] ]]

  if (var["type"] == "numeric") {
    x <- convert_to_numeric(x)
  } else if (var["type"] == "categorical") {
    x <- convert_to_categorical(x, var["categories"])
  } else if (var["type"] == "binary") {
    x <- convert_to_logical(x)
  } else if (var["type"] == "date") {
    x <- convert_to_date(x, var["date_format"])
  }

  x <- list(x)
  names(x) <- var["variable"]
  x
}

var_list <- read_excel("template.xlsx", sheet = "var_list")

tables <- unique(var_list$table)
names(tables) <- tables

df_list <- purrr::map(
  tables,
  function(n) read_excel("template.xlsx", sheet = n)
)

var_list %>%
  filter(table_name == tables[1]) %>%
  apply(1, convert_one, df_list = df_list)
AdrienLeGuillou/autostudy documentation built on May 16, 2019, 8:15 p.m.