Merge variables, keeping type, and optionally relevel factors
Source:R/utils.R
dfMergeVariablesRelevel.Rd
Merge variables in a data frame such as returned by dbGetFieldsIntoDf into a new variable, and optionally also map its values to new levels.
Arguments
- df
A data.frame with the variables (columns) to be merged into one vector.
- colnames
A vector of names of columns in `df` that hold the variables to be merged, or a selection of columns as per
select
.- levelslist
A names list with one slice each for a new value to be used for a vector of old values (optional).
Examples
dbc <- nodbi::src_sqlite(
dbname = system.file("extdata", "demo.sqlite", package = "ctrdata"),
collection = "my_trials")
df <- dbGetFieldsIntoDf(
fields = c("overall_status", "x5_trial_status"),
con = dbc)
#> overall_status...
#>
#>
#> x5_trial_status...
#>
statusvalues <- list(
"ongoing" = c("Recruiting", "Active", "Ongoing"),
"completed" = c("Completed", "Prematurely Ended", "Terminated"),
"other" = c("Withdrawn", "Suspended", "No longer available"))
dfMergeVariablesRelevel(
df = df,
colnames = 'contains("status")',
levelslist = statusvalues)
#> Columns identified to be merged: overall_status, x5_trial_status
#> [1] completed completed completed completed completed completed completed
#> [8] ongoing <NA> ongoing <NA> <NA> ongoing completed
#> [15] completed completed completed completed completed <NA> completed
#> [22] completed <NA> <NA> completed completed completed other
#> [29] completed completed completed completed other completed completed
#> [36] <NA> completed completed completed completed completed <NA>
#> [43] completed completed <NA> <NA> <NA> completed completed
#> [50] completed <NA>
#> Levels: ongoing completed other