Generates a data frame report of any categorical value options (the combination of 'variable' and 'name' in 'Categories') in a data dictionary that are not in the associated dataset and any categorical variable values in a dataset that are not declared in the associated data dictionary. This report can be used to help assess data structure, presence of fields, coherence across elements, and taxonomy or data dictionary formats.

check_dataset_categories(
  dataset,
  data_dict = silently_run(data_dict_extract(dataset))
)

Arguments

dataset

A dataset object.

data_dict

A list of data frame(s) representing metadata to be evaluated.

Value

A data frame providing categorical values which differ between dataset and their data dictionary.

Details

A data dictionary contains the list of variables in a dataset and metadata about the variables and can be associated with a dataset. A data dictionary object is a list of data frame(s) named 'Variables' (required) and 'Categories' (if any). To be usable in any function, the data frame 'Variables' must contain at least the name column, with all unique and non-missing entries, and the data frame 'Categories' must contain at least the variable and name columns, with unique combination of variable and name.

A dataset is a data table containing variables. A dataset object is a data frame and can be associated with a data dictionary. If no data dictionary is provided with a dataset, a minimum workable data dictionary will be generated as needed within relevant functions. Identifier variable(s) for indexing can be specified by the user. The id values must be non-missing and will be used in functions that require it. If no identifier variable is specified, indexing is handled automatically by the function.

Examples

{

# use madshapR_DEMO provided by the package
library(tidyr)

data_dict <-
  madshapR_DEMO$`data_dict_TOKYO - errors with data` %>%
  data_dict_filter('name == "prg_ever"')
dataset <- madshapR_DEMO$`dataset_TOKYO - errors with data`['prg_ever']

check_dataset_categories(dataset, data_dict)

}
#> # A tibble: 2 × 3
#>   name_var value condition                                                      
#>   <chr>    <chr> <chr>                                                          
#> 1 prg_ever -8    [INFO] - Categorical variable in the dataset but not in the da…
#> 2 prg_ever 9     [INFO] - Categorical variable in the dataset but not in the da…