Nothing
## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>"
)
## ----setup--------------------------------------------------------------------
library(datasetjson)
## ----XPT conversion-----------------------------------------------------------
adsl <- haven::read_xpt(file.path(system.file(package='datasetjson'), "adsl.xpt"))
#' Gather variable metadata in Dataset JSON compliant format
#'
#' @param n Variable name
#' @param .data Dataset to gather attributes
#'
#' @returns Columns compliant data frame
extract_xpt_meta <- function(n, .data) {
attrs <- attributes(.data[[n]])
out <- list()
# Identify the variable type
if (inherits(.data[[n]],"Date")) {
out$dataType <- "date"
out$targetDataType <- "integer"
} else if (inherits(.data[[n]],"POSIXt")) {
out$dataType <- "datetime"
out$targetDataType <- "integer"
} else if (inherits(.data[[n]],"numeric")) {
if (any(is.double(.data[[n]]))) out$dataType <- "float"
else out$dataType <- "integer"
} else if (inherits(.data[[n]],"hms")) {
out$dataType <- "time"
out$targetDataType <- "integer"
} else {
out$dataType <- "string"
out$length <- max(purrr::map_int(.data[[n]], nchar))
}
out$itemOID <- n
out$name <- n
out$label <- attr(.data[[n]], 'label')
out$displayFormat <- attr(.data[[n]], 'format.sas')
tibble::as_tibble(out)
}
# Loop the ADSL columns
adsl_meta <- purrr::map_df(names(adsl), extract_xpt_meta, .data=adsl)
adsl_meta
## -----------------------------------------------------------------------------
# Create the datasetjson object
ds_json <- dataset_json(
adsl,
item_oid = "ADSL",
name = "ADSL",
dataset_label = attr(adsl, 'label'),
columns = adsl_meta
)
# Write the JSON
json_file_content <- write_dataset_json(ds_json)
## -----------------------------------------------------------------------------
# Check schema compliance
validate_dataset_json(json_file_content)
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.