## ----setup, include = FALSE--------------------------------------------------- # The rule engine reads YAML, so only evaluate chunks when it is installed. has_yaml <- requireNamespace("yaml", quietly = TRUE) knitr::opts_chunk$set( collapse = TRUE, comment = "#>", eval = has_yaml ) library(DCC) ## ----data--------------------------------------------------------------------- csv <- tempfile(fileext = ".csv") writeLines(c( "sid,score,q1,q2,q3", "S1,90,1,2,3", "S2,150,2,2,2", "S3,70,1,,3" ), csv) ## ----rules-------------------------------------------------------------------- rules_file <- tempfile(fileext = ".yaml") writeLines(c( "checks:", " - id: R001", " type: range", " variable: score", " min: 0", " max: 100", " severity: fail", " - id: D001", " type: missing_items", " items: [q1, q2, q3]", " max_prop: 0.3" ), rules_file) ## ----detect------------------------------------------------------------------- x <- dcc_read(csv) rules <- dcc_rules(rules_file) found <- dcc_detect(x, rules, id_var = "sid") found ## ----execute------------------------------------------------------------------ res <- dcc_execute( x, found, actions = list(R001 = "set_na", Q_MISSING_ITEMS = "flag"), id_var = "sid" ) dcc_cleaned(res) ## ----audit-------------------------------------------------------------------- dcc_audit_log(res) ## ----report------------------------------------------------------------------- report_path <- tempfile(fileext = ".html") dcc_report(res, report_path) file.exists(report_path) ## ----trace-------------------------------------------------------------------- dcc_trace(res, "S2", "score") ## ----rerun-------------------------------------------------------------------- check <- dcc_rerun(dcc_manifest(res)) check$reproduced ## ----chunked------------------------------------------------------------------ dcc_detect_chunked(csv, rules, chunk_size = 2L, id_var = "sid", encoding = "UTF-8")