Dates

knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

In this example, we start with a data frame with two columns, one with full dates and one with partial dates. The goal is to consolidate these dates into one ISO 8601 formatted date column.

library(sdtmval)
library(dplyr)

raw_dates <- data.frame(
  raw_full = c(
    rep(NA, 8),
    "02/05/2017",
    "02-05-2017"
  ),
  raw_partial = c(
    "UN-UNK-UNKN",
    "UN/UNK/UNKN",
    "UN UNK UNKN",
    "UN-UNK-2017",
    "UN-Feb-2017",
    "05-FEB-2017",
    "05-UNK-2017",
    "05-Feb-UNKN",
    rep(NA, 2)
  )
)
knitr::kable(raw_dates)

First, we will re-arrange the partial dates into the same format as the full dates using reshape_pdates(). That will let us combine the full and partial dates into one column with a MM/DD/YYYY format. Then, using reshape_adates(), we will convert all dates to the YYYY-MM-DD format.

working_dates <- raw_dates %>%
  mutate(
    partial = reshape_pdates(raw_partial),
    all = coalesce(raw_full, partial),
    all = reshape_adates(all)
  )
knitr::kable(working_dates)

For situations where missing date elements should be removed, use the trim_dates() function.

trimmed_dates <- mutate(working_dates, trimmed = trim_dates(all))
knitr::kable(trimmed_dates)

If imputed dates are needed, use the impute_pdates() function. Both start and end dates can be imputed using standard imputation rules.

imputed_dates <- working_dates %>%
  mutate(
    start = impute_pdates(all, ptype = "start"),
    end = impute_pdates(all, ptype = "end")
  )
knitr::kable(imputed_dates)


Try the sdtmval package in your browser

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

sdtmval documentation built on Oct. 23, 2023, 5:10 p.m.