Orchestrates the full cleaning pipeline for a single dataset. Each step
is delegated to a focused internal helper (see clean_dataset.R source)
so individual steps can be tested and extended independently.
Arguments
- dt
A
data.table(or coercible object).- config
Config object returned by
load_config().- year_tag
Optional integer year added as a
yearcolumn.- dataset_label
Human-readable label used in warnings and logs.
- apply_missing
If
TRUE, recode numeric missing codes toNA. DefaultFALSE(explicit opt-in to avoid silent data loss).
Value
A list:
- data
The cleaned
data.table.- issues
data.tablewith columnsvariable,issue_type,detail- one row per coercion failure or value violation.
Details
Steps in order:
Normalise column names (
.normalise_colnames())Match columns to canonical names (
match_columns())Apply renames (
.apply_renames())Keep only canonical columns (
.select_canonical_cols())Recode values (
.apply_recodes())Optionally replace missing codes with NA (
.apply_missing_codes())Safe type coercion (
.coerce_all_columns())Value conformance validation (
.validate_all_values())Inject year column (
.inject_year())Remove duplicate/empty rows (
.drop_empty_rows())
Examples
if (FALSE) { # \dontrun{
yml <- system.file("extdata", "variable_map.yml", package = "cuci")
csv <- system.file("extdata", "test-data.csv", package = "cuci")
cfg <- load_config(yml)
raw <- data.table::fread(csv)
out <- clean_dataset(raw, cfg, year_tag = 2023, dataset_label = "test")
out$data
out$issues
} # }
