Generates a data dictionary from a dataset. If the dataset variables have no associated metadata, a minimum data dictionary is created by using variable attributes.

data_dict_extract(dataset, as_data_dict_mlstr = TRUE)

Arguments

dataset

A dataset object.

as_data_dict_mlstr

Whether the input data dictionary should be coerced with specific format restrictions for compatibility with other Maelstrom Research software. TRUE by default.

Value

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

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.

The object may be specifically formatted to be compatible with additional Maelstrom Research software, in particular Opal environments.

Examples

{

library(dplyr)

###### Example 1: use madshapR_examples provided by the package
# download a dataset and its data dictionary
# apply the data dictionary to its dataset
dataset   <- madshapR_examples$`dataset_example` 
data_dict <- as_data_dict_mlstr(madshapR_examples$`data_dictionary_example`)
dataset   <- data_dict_apply(dataset,data_dict)

# extract the data dictionary from the dataset
data_dict <- data_dict_extract(dataset)

glimpse(data_dict)

###### Example 2: extract data dictionary from any dataset (the 
# data dictionary will be created upon attributes of the dataset. Factors 
# will be considered as categorical variables)

glimpse(data_dict)

}
#> List of 2
#>  $ Variables : tibble [9 × 8] (S3: tbl_df/tbl/data.frame)
#>   ..$ index                : int [1:9] 1 2 3 4 5 6 7 8 9
#>   ..$ name                 : chr [1:9] "part_id" "gndr" "height" "weight_ms" ...
#>   ..$ label:en             : chr [1:9] "id of the participant" "gndr" "height" "weight_ms" ...
#>   ..$ description:en       : chr [1:9] "id of the participant" "gender of the participant" "height of the participant" "weight of the participant - measured" ...
#>   ..$ valueType            : chr [1:9] "text" "integer" "integer" "integer" ...
#>   ..$ unit                 : chr [1:9] NA NA "cm" "kg" ...
#>   ..$ datacollection::type : chr [1:9] "automatic" "declared" "declared" "measured" ...
#>   ..$ datacollection::level: chr [1:9] "high" "high" "moderate" "moderate" ...
#>  $ Categories: tibble [11 × 4] (S3: tbl_df/tbl/data.frame)
#>   ..$ variable: chr [1:11] "gndr" "gndr" "gndr" "weight_ms" ...
#>   ..$ name    : chr [1:11] "1" "2" "-77" "-99" ...
#>   ..$ label:en: chr [1:11] "Male" "Female" "Don’t want to answer" "Don’t know" ...
#>   ..$ missing : logi [1:11] FALSE FALSE TRUE TRUE TRUE FALSE ...
#>  - attr(*, "madshapR::class")= chr "data_dict_mlstr"
#> List of 2
#>  $ Variables : tibble [9 × 8] (S3: tbl_df/tbl/data.frame)
#>   ..$ index                : int [1:9] 1 2 3 4 5 6 7 8 9
#>   ..$ name                 : chr [1:9] "part_id" "gndr" "height" "weight_ms" ...
#>   ..$ label:en             : chr [1:9] "id of the participant" "gndr" "height" "weight_ms" ...
#>   ..$ description:en       : chr [1:9] "id of the participant" "gender of the participant" "height of the participant" "weight of the participant - measured" ...
#>   ..$ valueType            : chr [1:9] "text" "integer" "integer" "integer" ...
#>   ..$ unit                 : chr [1:9] NA NA "cm" "kg" ...
#>   ..$ datacollection::type : chr [1:9] "automatic" "declared" "declared" "measured" ...
#>   ..$ datacollection::level: chr [1:9] "high" "high" "moderate" "moderate" ...
#>  $ Categories: tibble [11 × 4] (S3: tbl_df/tbl/data.frame)
#>   ..$ variable: chr [1:11] "gndr" "gndr" "gndr" "weight_ms" ...
#>   ..$ name    : chr [1:11] "1" "2" "-77" "-99" ...
#>   ..$ label:en: chr [1:11] "Male" "Female" "Don’t want to answer" "Don’t know" ...
#>   ..$ missing : logi [1:11] FALSE FALSE TRUE TRUE TRUE FALSE ...
#>  - attr(*, "madshapR::class")= chr "data_dict_mlstr"