Performs an inner join between a dataset and its associated data dictionary, keeping only variables present in both. This function returns the matched dataset rows, the matched data dictionary rows, or both, in a list.

data_dict_match_dataset(
  dataset,
  data_dict,
  data_dict_apply = FALSE,
  output = c("dataset", "data_dict")
)

Arguments

dataset

A dataset object.

data_dict

A list of data frame(s) representing metadata of the input dataset.

data_dict_apply

Whether data dictionary(ies) should be applied to associated dataset(s), creating labelled dataset(s) with variable attributes. Any previous attributes will be preserved. FALSE by default.

output

A vector of character string which indicates if the function returns a dataset ('dataset'), data dictionary ('data_dict') of both. Default is c('dataset','data_dict').

Value

Either a data frame, identifying the dataset, or a list of data frame(s) identifying a data dictionary. Returns both in a list by default.

Details

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.

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.

Examples

{

# use madshapR_DEMO provided by the package
library(dplyr)

dataset <- madshapR_DEMO$dataset_MELBOURNE %>% select(-1)
data_dict <- madshapR_DEMO$data_dict_MELBOURNE
head(data_dict_match_dataset(dataset, data_dict, out = 'dataset'))
glimpse(data_dict_match_dataset(dataset, data_dict, out = 'data_dict'))

}
#> List of 2
#>  $ Variables : tibble [5 × 6] (S3: tbl_df/tbl/data.frame)
#>   ..$ index         : num [1:5] 2 3 4 5 6
#>   ..$ name          : chr [1:5] "Gender" "BMI" "age" "smo_status" ...
#>   ..$ label:en      : chr [1:5] "Gender" "BMI" "age" "smo_status" ...
#>   ..$ description:en: chr [1:5] "Gender" "Body Mass Index" "Age of Participant" "Whether the participant is a current smoker or not" ...
#>   ..$ valueType     : chr [1:5] "integer" "decimal" "integer" "integer" ...
#>   ..$ unit          : chr [1:5] NA "kg/m^2" "years" NA ...
#>  $ Categories: tibble [12 × 4] (S3: tbl_df/tbl/data.frame)
#>   ..$ variable: chr [1:12] "age" "Gender" "Gender" "prg_curr" ...
#>   ..$ name    : num [1:12] -888 1 2 0 1 8 9 -77 1 2 ...
#>   ..$ label:en: chr [1:12] "don't want to answer" "Male" "Female" "not currently pregnant" ...
#>   ..$ missing : logi [1:12] TRUE FALSE FALSE FALSE FALSE TRUE ...