R/main_.R

library(tidyverse)
library(sauceR)



module_source("xlsform-utilities.R", module_name = "Figure1")


surveyDF <- readxl::read_excel("RISE_enumeration_family_Fiji.xlsx", 
                               sheet = "survey")
choicesDF <- readxl::read_excel("RISE_enumeration_family_Fiji.xlsx", 
                                sheet = "choices")
settingsDF <- readxl::read_excel("RISE_enumeration_family_Fiji.xlsx", 
                                 sheet = "settings")
form_title <- settingsDF$form_title[[1]]
form_id <- settingsDF$form_id[[1]]


form_version <- settingsDF$version[[1]]
default_language <- settingsDF$default_language[[1]]
rm(settingsDF)


surveyDF <- filter(surveyDF, 
                   !(type %in% c("note", 
                                 "begin group", 
                                 "end group", 
                                 "begin repeat",
                                 "end repeat")), 
                   !is.na(type))

surveyDF$id <- 1:nrow(surveyDF)

surveyDF$factorlabel <- NA
the_labels <- grep("select_one|select_multiple", surveyDF$type)
surveyDF$factorlabel[the_labels] <- surveyDF$type[the_labels]
surveyDF$factorlabel <- gsub("select_one ", "", surveyDF$factorlabel)
surveyDF$factorlabel <- gsub("select_multiple ", "", surveyDF$factorlabel)



surveyDF$type[surveyDF$type == "start"] <- "date-time (start)"
surveyDF$type[surveyDF$type == "end"] <- "date-time (end)"
surveyDF$type[surveyDF$type == "deviceid"] <- "deviceid (string)"
surveyDF$type[surveyDF$type == "text"] <- "string"
surveyDF$type[surveyDF$type == "text"] <- "string"
surveyDF$type[surveyDF$type == "barcode"] <- "string"
surveyDF$type[surveyDF$type == "calculate"] <- "unknown (calculate)"





the_type <- grep("select_one", surveyDF$type)
surveyDF$type[the_type] <- "factor (select one)"
the_type <- grep("select_multiple", surveyDF$type)
surveyDF$type[the_type] <- "factor (select multiple)"

output_format <- "pdf_document"
yaml_header <- c("---",
                 paste("title: ", "'", form_title, " Codebook", "'", sep = ''),
                 "author: 'Monash-RISE'",
                 paste("date: ", '"', "`r format(Sys.time(), '%d %B, %Y')`", '"'),
                 paste("output: ", output_format, sep = ''),
                 "---")

write(yaml_header, file="out.Rmd")
write(paste("\n","Form ID: ", form_id, "\t", 
            "Form Version: ", form_version, "\n", sep = ''),
      file="out.Rmd", append=T)


for(i in 1:nrow(surveyDF)){
  write("***", file="out.Rmd", append=T)
  write(paste("# Variable Name: ", surveyDF$name[i], sep = ''), file="out.Rmd", append=T)
  write(paste("Variable Label: ", 
              ifelse(is.na(surveyDF$`label::English`[i]), "NULL", surveyDF$`label::English`[i]) 
              ,"\n",
              sep = ''), file="out.Rmd", append=T)
  
  write(paste("Data Type:      ", surveyDF$type[i], sep = ''), file="out.Rmd", append=T)
  write("\n", file="out.Rmd", append=T)
  
  if(grepl("factor", surveyDF$type[i])){
    factor_label <- surveyDF$factorlabel[i]
    factorDF <- filter(choicesDF, list_name == factor_label) %>%
      select(value, label = `label::English`) %>%
      arrange(as.numeric(value))

    write("Value | Label", file="out.Rmd", append=T)
    write("------|------", file="out.Rmd", append=T)
    
    for(j in 1:nrow(factorDF)){
      write(paste(factorDF$value[j], "|", factorDF$label[j]), file="out.Rmd", append=T)
    }
  }
}

rmarkdown::render("out.Rmd", "pdf_document")
Monash-RISE/xlsform2codebook documentation built on May 6, 2019, 8:36 p.m.