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)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.