inst/doc/xportr.R

## ---- include = FALSE---------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = " "
)

library(DT)

options(cli.num_colors = 1)

## ---- include=FALSE---------------------------------------
options(width = 60)
local({
  hook_output <- knitr::knit_hooks$get("output")
  knitr::knit_hooks$set(output = function(x, options) {
    if (!is.null(options$max.height)) {
      options$attr.output <- c(
        options$attr.output,
        sprintf('style="max-height: %s;"', options$max.height)
      )
    }
    hook_output(x, options)
  })
})

## ---- include=FALSE---------------------------------------
knitr::knit_hooks$set(output = function(x, options) {
  if (!is.null(options$max_height)) {
    paste('<pre style = "max-height:',
      options$max_height,
      '; float: left; width: 775px; overflow-y: auto;">',
      x, "</pre>",
      sep = ""
    )
  } else {
    x
  }
})

## ---- include=FALSE---------------------------------------
datatable_template <- function(input_data) {
  datatable(
    input_data,
    rownames = FALSE,
    options = list(
      autoWidth = FALSE,
      scrollX = TRUE,
      pageLength = 5,
      lengthMenu = c(5, 10, 15, 20)
    )
  ) %>%
    formatStyle(
      0,
      target = "row",
      color = "black",
      backgroundColor = "white",
      fontWeight = "500",
      lineHeight = "85%",
      fontSize = ".875em" # same as code
    )
}

## ---- eval = TRUE, message = FALSE, warning = FALSE-------
# Loading packages
library(dplyr)
library(labelled)
library(xportr)
library(readxl)

# Loading in our example data
data("adsl_xportr", package = "xportr")

## ---- echo = FALSE----------------------------------------
datatable_template(adsl_xportr)

## ---------------------------------------------------------
var_spec <- read_xlsx(
  system.file(file.path("specs/", "ADaM_spec.xlsx"), package = "xportr"),
  sheet = "Variables"
) %>%
  rename(type = "Data Type") %>%
  rename_with(tolower)

## ---- echo = FALSE, eval = TRUE---------------------------
var_spec_view <- var_spec %>%
  filter(dataset == "ADSL")

datatable_template(var_spec_view)

## ----  max_height = "200px", echo = FALSE-----------------
str(adsl_xportr)

## ---- echo = TRUE-----------------------------------------
adsl_type <- xportr_type(adsl_xportr, var_spec, domain = "ADSL", verbose = "message")

## ----  max_height = "200px", echo = FALSE-----------------
str(adsl_type)

## ----  max_height = "200px", echo = FALSE-----------------
str(adsl_xportr)

## ---------------------------------------------------------
adsl_length <- adsl_xportr %>% xportr_length(var_spec, domain = "ADSL", verbose = "message")

## ----  max_height = "200px", echo = FALSE-----------------
str(adsl_length)

## ---- echo = TRUE-----------------------------------------
adsl_order <- xportr_order(adsl_xportr, var_spec, domain = "ADSL", verbose = "message")

## ---- echo = FALSE----------------------------------------
datatable_template(adsl_order)

## ---- max_height = "200px", echo = FALSE------------------
adsl_fmt_pre <- adsl_xportr %>%
  select(TRTSDT, TRTEDT, TRTSDTM, TRTEDTM)

tribble(
  ~Variable, ~Format,
  "TRTSDT", attr(adsl_fmt_pre$TRTSDT, which = "format"),
  "TRTEDT", attr(adsl_fmt_pre$TRTEDT, which = "format"),
  "TRTSDTM", attr(adsl_fmt_pre$TRTSDTM, which = "format"),
  "TRTEDTM", attr(adsl_fmt_pre$TRTEDTM, which = "format")
)

## ---------------------------------------------------------
adsl_fmt <- adsl_xportr %>% xportr_format(var_spec, domain = "ADSL")

## ---- max_height = "200px", echo = FALSE------------------
adsl_fmt_post <- adsl_fmt %>%
  select(TRTSDT, TRTEDT, TRTSDTM, TRTEDTM)

tribble(
  ~Variable, ~Format,
  "TRTSDT", attr(adsl_fmt_post$TRTSDT, which = "format"),
  "TRTEDT", attr(adsl_fmt_post$TRTEDT, which = "format"),
  "TRTSDTM", attr(adsl_fmt_post$TRTSDTM, which = "format"),
  "TRTEDTM", attr(adsl_fmt_post$TRTEDTM, which = "format")
)

## ----  max_height = "200px", echo = FALSE-----------------
adsl_no_lbls <- haven::zap_label(adsl_xportr)

str(adsl_no_lbls)

## ---------------------------------------------------------
adsl_lbl <- adsl_xportr %>% xportr_label(var_spec, domain = "ADSL", "message")

## ----  max_height = "200px"-------------------------------
str(adsl_lbl)

## ---------------------------------------------------------
adsl_xportr %>%
  xportr_type(var_spec, "ADSL", "message") %>%
  xportr_length(var_spec, "ADSL", verbose = "message") %>%
  xportr_label(var_spec, "ADSL", "message") %>%
  xportr_order(var_spec, "ADSL", "message") %>%
  xportr_format(var_spec, "ADSL") %>%
  xportr_write("adsl.xpt")

Try the xportr package in your browser

Any scripts or data that you put into this service are public.

xportr documentation built on Oct. 8, 2024, 1:08 a.m.