R/02-harmo_process_harmonization.R
as_harmonized_dossier.Rd
Checks if an object is a valid harmonized dossier and returns it with the
appropriate Rmonize::class
attribute. This function mainly helps validate
inputs within other functions of the package but could be used separately to
ensure that an object has an appropriate structure. The function
has two arguments that can optionally be declared by the user
(unique_col_dataset
and unique_col_id
). unique_col_dataset
refers to
the columns which contains name of each harmonized dataset. unique_col_id
refers to the column in harmonized datasets which identifies unique
combinations of observation/dataset. These two columns are added to ensure
that there is always a unique entity identifier when datasets are pooled.
as_harmonized_dossier(
object,
dataschema = attributes(object)$`Rmonize::DataSchema`,
data_proc_elem = attributes(object)$`Rmonize::Data Processing Elements`,
harmonized_col_id = attributes(object)$`Rmonize::harmonized_col_id`,
harmonized_col_dataset = attributes(object)$`Rmonize::harmonized_col_dataset`,
harmonized_data_dict_apply = FALSE
)
A A potential harmonized dossier object to be coerced.
A DataSchema object.
A Data Processing Elements object.
A character string identifying the name of the column present in every dataset to use as a dataset identifier.
A character string identifying the column to use for dataset names.
Whether to apply the dataschema to each harmonized dataset. FALSE by default.
A list of data frame(s), containing harmonized dataset(s). The DataSchema and Data Processing Elements are preserved as attributes of the output harmonized dossier.
A harmonized dossier is a named list containing one or more data frames, which are harmonized datasets. A harmonized dossier is generally the product of applying processing to a dossier object The name of each harmonized dataset (data frame) is taken from the reference input dataset. A harmonized dossier also contains the DataSchema and Data Processing Elements used in processing as attributes.
A DataSchema is the list of core variables to generate across datasets and
related metadata. A DataSchema object is a list of data frames with elements
named 'Variables' (required) and 'Categories' (if any). The 'Variables'
element must contain at least the name
column, and the 'Categories'
element must contain at least the variable
and name
columns to be usable
in any function. In 'Variables' the name
column must also have unique
entries, and in 'Categories' the combination of variable
and name
columns
must also be unique.
The Data Processing Elements specifies the algorithms used to process input
variables into harmonized variables in the DataSchema format. It is also
contains metadata used to generate documentation of the processing.
A Data Processing Elements object is a data frame with specific columns
used in data processing: dataschema_variable
, input_dataset
,
input_variables
, Mlstr_harmo::rule_category
and Mlstr_harmo::algorithm
.
To initiate processing, the first entry must be the creation of a harmonized
primary identifier variable (e.g., participant unique ID).
{
# Use Rmonize_DEMO to run examples.
library(dplyr)
glimpse(as_harmonized_dossier(Rmonize_DEMO$harmonized_dossier))
}
#> List of 1
#> $ dataset_MELBOURNE: tibble [0 × 1] (S3: tbl_df/tbl/data.frame)
#> ..$ adm_unique_id: chr(0)
#> .. ..- attr(*, "Variables::label:en")= chr "Unique identification code of the participant."
#> .. ..- attr(*, "Variables::typeof")= chr "character"
#> .. ..- attr(*, "Variables::index")= chr "1"
#> .. ..- attr(*, "Variables::Mlstr_harmo::rule_category")= chr "id_creation"
#> .. ..- attr(*, "Variables::Mlstr_harmo::algorithm")= chr "id_creation"
#> .. ..- attr(*, "Variables::Rmonize::r_script")= chr "`dataset_MELBOURNE` %>% select('adm_unique_id' = 'id')"
#> .. ..- attr(*, "Variables::Mlstr_harmo::status")= chr "complete"
#> .. ..- attr(*, "Variables::Mlstr_harmo::status_detail")= chr "unknown"
#> ..- attr(*, "madshapR::class")= chr "dataset"
#> ..- attr(*, "madshapR::col_id")= chr "adm_unique_id"
#> - attr(*, "Rmonize::class")= chr "harmonized_dossier"
#> - attr(*, "Rmonize::DataSchema")=List of 1
#> ..$ Variables: tibble [1 × 4] (S3: tbl_df/tbl/data.frame)
#> ..- attr(*, "madshapR::class")= chr "data_dict_mlstr"
#> ..- attr(*, "Rmonize::class")= chr "dataschema_mlstr"
#> - attr(*, "Rmonize::Data Processing Elements")= tibble [1 × 11] (S3: tbl_df/tbl/data.frame)
#> ..$ index : num 1
#> ..$ dataschema_variable : chr "adm_unique_id"
#> ..$ valueType : chr NA
#> ..$ input_dataset : chr "dataset_MELBOURNE"
#> ..$ input_variables : chr "id"
#> ..$ Mlstr_harmo::rule_category: chr "id_creation"
#> ..$ Mlstr_harmo::algorithm : chr "id_creation"
#> ..$ Mlstr_harmo::status : chr "complete"
#> ..$ Mlstr_harmo::status_detail: chr "unknown"
#> ..$ Mlstr_harmo::comment : chr NA
#> ..$ Rmonize::r_script : chr "`dataset_MELBOURNE` %>% \n select('adm_unique_id' = 'id')"
#> ..- attr(*, "Rmonize::class")= chr "data_proc_elem"
#> - attr(*, "Rmonize::harmonized_col_id")= chr "adm_unique_id"