## ----setup, include=FALSE-----------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ----load-package-------------------------------------------------------------
library(DataAudit)

## ----example-data-------------------------------------------------------------
dat <- data.frame(
  ID = c(
    "A001",
    "A002",
    "A002",
    "BAD",
    "A005"
  ),
  Species = c(
    "Dog",
    "Horse",
    "",
    "Cat",
    "Dog"
  ),
  Age = c(
    5,
    40,
    -2,
    10,
    NA
  ),
  stringsAsFactors = FALSE
)

dat

## ----general-audit------------------------------------------------------------
report <- audit_data(
  dat,
  include_nzv = FALSE
)

report

## ----report-class-------------------------------------------------------------
class(report)

## ----report-components--------------------------------------------------------
names(report)

## ----overview-----------------------------------------------------------------
report$overview

## ----variable-results---------------------------------------------------------
report$variables

## ----duplicates---------------------------------------------------------------
report$duplicates

## ----missing-check------------------------------------------------------------
missing_check(dat)

## ----blank-check--------------------------------------------------------------
blank_check(dat)

## ----range-check--------------------------------------------------------------
range_check(
  dat,
  variable = "Age",
  min = 0,
  max = 30
)

## ----category-check-----------------------------------------------------------
category_check(
  dat,
  variable = "Species",
  allowed = c(
    "Dog",
    "Cat"
  )
)

## ----unique-check-------------------------------------------------------------
unique_check(
  dat,
  variable = "ID"
)

## ----pattern-check------------------------------------------------------------
pattern_check(
  dat,
  variable = "ID",
  pattern = "^A[0-9]{3}$"
)

## ----define-rules-------------------------------------------------------------
rules <- audit_rules(
  range = list(
    Age = c(0, 30)
  ),
  category = list(
    Species = c(
      "Dog",
      "Cat"
    )
  ),
  unique = "ID",
  required = "Species",
  pattern = list(
    ID = "^A[0-9]{3}$"
  )
)

rules

## ----apply-rules--------------------------------------------------------------
rule_results <- apply_audit_rules(
  dat,
  rules
)

rule_results

## ----rule-summary-------------------------------------------------------------
rule_results$summary
rule_results$total_violations

## ----summarize-rules----------------------------------------------------------
summary(rule_results)

## ----integrated-audit---------------------------------------------------------
report <- audit_data(
  dat,
  include_nzv = FALSE,
  rules = rules
)

report

## ----integrated-components----------------------------------------------------
report$summary
report$rules

## ----report-summary-----------------------------------------------------------
audit_summary <- summary(report)

audit_summary

## ----summary-components-------------------------------------------------------
audit_summary$dataset
audit_summary$variables_with_issues
audit_summary$duplicate_rows
audit_summary$rules

## ----score--------------------------------------------------------------------
score <- audit_score(report)

score

## ----score-components---------------------------------------------------------
score$score
score$quality
score$automatic_issues
score$rule_violations
score$overall_issues

