knitr::opts_chunk$set(echo = FALSE, warning = FALSE, message = FALSE)
knitr::opts_knit$set(root.dir = '../')

DATA DICTIONARY
Project: r CIDAtools::ProjectName()
PI: r CIDAtools::ProjectPI()
Prepared By: r CIDAtools::ProjectAnalyst()
Date: r paste(format(Sys.Date(), '%m/%d/%Y'))

# set your data
# load(file = '')
library(pander)
# set maximum number of values to list
mVal <- 25

# function to get values
values <- function(variable){
  if(is.character(variable)){
    fxrs <- levels(as.factor(variable))
  }
  else fxrs <- levels(variable)
  if(length(fxrs) > mVal) fxrs <- NULL
  return(fxrs)
}

# function to make data dictionary
makedic <- function(dfname){
  df <- get(dfname)
  Values <- lapply(df, values)
  Values <- sapply(Values, paste0, collapse = ' \\\n ')
  Type <- sapply(df, class)
  # POSIXt classes will have 2 classes need to remove one and 
  # set to date
  Type <- lapply(Type, sub, pattern = 'POSIXt', replacement = "Date")
  Type <- sapply(Type, grep, pattern = 'POSI', value = T, invert = T)
  dic <- data.frame(Variables = names(df), Type, 
                    Values = Values, 
                    stringsAsFactors = F, row.names = NULL)
  dic <- data.frame(Variables = names(df), Type = Type, 
                    Values = Values, 
                    stringsAsFactors = F, row.names = NULL)
  return(dic)
}

dataframes <- ls()[sapply(ls(), function(x) is.data.frame(get(x)))]
printtbl <- function(dfname){
  set.alignment('left')
  pander(makedic(dfname), caption = dfname)
  return()
}
panderOptions('knitr.auto.asis', FALSE)
panderOptions('keep.line.breaks', TRUE)
# panderOptions('table.split.cells', Inf)
# panderOptions('table.split.table', Inf)
invisible(sapply(dataframes, printtbl))


ledbettc/CIDAtools documentation built on Jan. 24, 2020, 3:56 p.m.