codified
PackageFirst, install the codified
package if necessary, and then load it into memory.
if( !requireNamespace("codified", quietly=T) )
devtools::install_github(repo= "OuhscBbmc/codified")
library(codified)
library(magrittr)
path <- system.file("misc/example-data-1.csv", package="codified")
col_types <- readr::cols_only(
record_id = readr::col_integer(),
name_last = readr::col_character(),
dob = readr::col_date(format = ""),
gender = readr::col_integer(),
race = readr::col_integer(),
ethnicity = readr::col_integer()
)
ds <- readr::read_csv(path, col_types=col_types) %>%
dplyr::mutate(
gender = as.character(gender),
race = as.character(race),
ethnicity = as.character(ethnicity)
)
ds %>%
head(10) %>%
knitr::kable(caption = "Observed Dataset (first ten rows)")
record_id | name_last | dob | ethnicity | race | gender |
---|---|---|---|---|---|
1 | Cornel | 1991-05-13 | 1 | 4 | 0 |
2 | Wojdyla | 1931-10-14 | 1 | 4 | 0 |
3 | Stunkard | 1964-09-15 | 1 | 3 | 1 |
4 | Cimochowski | 1969-05-03 | 1 | 4 | 1 |
5 | Woodland | 1969-11-22 | 1 | 4 | 0 |
6 | Pistoia | 1943-08-26 | 1 | 4 | 1 |
7 | Ahlquist | 1944-01-22 | 1 | 4 | 0 |
8 | Ashlin | 1931-04-14 | 1 | 4 | 1 |
9 | Djokovic | 1962-07-07 | 1 | 1 | 1 |
10 | Mosses | 1978-06-20 | 1 | 3 | 0 |
ds_lu_gender <- tibble::tribble(
~input, ~displayed ,
"0" , "Female" ,
"1" , "Male" ,
"U" , "Unknown/Not Reported"
)
knitr::kable(ds_lu_gender, caption = "Gender Mapping")
input | displayed |
---|---|
0 | Female |
1 | Male |
U | Unknown/Not Reported |
ds_lu_race <- tibble::tribble(
~input , ~displayed ,
"1" , "American Indian/Alaska Native" ,
"2" , "Asian" ,
"3" , "Native Hawaiian or Other Pacific Islander" ,
"4" , "Black or African American" ,
"5" , "White" ,
"M" , "More than One Race" ,
"6" , "Unknown or Not Reported"
)
knitr::kable(ds_lu_race, caption = "Race Mapping")
input | displayed |
---|---|
1 | American Indian/Alaska Native |
2 | Asian |
3 | Native Hawaiian or Other Pacific Islander |
4 | Black or African American |
5 | White |
M | More than One Race |
6 | Unknown or Not Reported |
ds_lu_ethnicity <- tibble::tribble(
~input, ~displayed ,
"2" , "Not Hispanic or Latino" ,
"1" , "Hispanic or Latino" ,
"0" , "Unknown/Not Reported Ethnicity"
)
knitr::kable(ds_lu_ethnicity, caption = "Ethnicity Mapping")
input | displayed |
---|---|
2 | Not Hispanic or Latino |
1 | Hispanic or Latino |
0 | Unknown/Not Reported Ethnicity |
ds_summary_long <- codified::table_nih_enrollment(
d = ds,
d_lu_gender = ds_lu_gender,
d_lu_race = ds_lu_race,
d_lu_ethnicity = ds_lu_ethnicity
)
knitr::kable(ds_summary_long, caption = "Counts of Each Subgroup")
gender | race | ethnicity | n |
---|---|---|---|
Female | American Indian/Alaska Native | Not Hispanic or Latino | 1 |
Female | American Indian/Alaska Native | Hispanic or Latino | 8 |
Female | American Indian/Alaska Native | Unknown/Not Reported Ethnicity | 0 |
Female | Asian | Not Hispanic or Latino | 0 |
Female | Asian | Hispanic or Latino | 0 |
Female | Asian | Unknown/Not Reported Ethnicity | 0 |
Female | Native Hawaiian or Other Pacific Islander | Not Hispanic or Latino | 1 |
Female | Native Hawaiian or Other Pacific Islander | Hispanic or Latino | 28 |
Female | Native Hawaiian or Other Pacific Islander | Unknown/Not Reported Ethnicity | 3 |
Female | Black or African American | Not Hispanic or Latino | 1 |
Female | Black or African American | Hispanic or Latino | 172 |
Female | Black or African American | Unknown/Not Reported Ethnicity | 14 |
Female | White | Not Hispanic or Latino | 1 |
Female | White | Hispanic or Latino | 22 |
Female | White | Unknown/Not Reported Ethnicity | 2 |
Female | More than One Race | Not Hispanic or Latino | 0 |
Female | More than One Race | Hispanic or Latino | 0 |
Female | More than One Race | Unknown/Not Reported Ethnicity | 0 |
Female | Unknown or Not Reported | Not Hispanic or Latino | 0 |
Female | Unknown or Not Reported | Hispanic or Latino | 7 |
Female | Unknown or Not Reported | Unknown/Not Reported Ethnicity | 0 |
Male | American Indian/Alaska Native | Not Hispanic or Latino | 0 |
Male | American Indian/Alaska Native | Hispanic or Latino | 10 |
Male | American Indian/Alaska Native | Unknown/Not Reported Ethnicity | 0 |
Male | Asian | Not Hispanic or Latino | 0 |
Male | Asian | Hispanic or Latino | 0 |
Male | Asian | Unknown/Not Reported Ethnicity | 0 |
Male | Native Hawaiian or Other Pacific Islander | Not Hispanic or Latino | 1 |
Male | Native Hawaiian or Other Pacific Islander | Hispanic or Latino | 22 |
Male | Native Hawaiian or Other Pacific Islander | Unknown/Not Reported Ethnicity | 1 |
Male | Black or African American | Not Hispanic or Latino | 5 |
Male | Black or African American | Hispanic or Latino | 154 |
Male | Black or African American | Unknown/Not Reported Ethnicity | 6 |
Male | White | Not Hispanic or Latino | 0 |
Male | White | Hispanic or Latino | 33 |
Male | White | Unknown/Not Reported Ethnicity | 1 |
Male | More than One Race | Not Hispanic or Latino | 0 |
Male | More than One Race | Hispanic or Latino | 0 |
Male | More than One Race | Unknown/Not Reported Ethnicity | 0 |
Male | Unknown or Not Reported | Not Hispanic or Latino | 0 |
Male | Unknown or Not Reported | Hispanic or Latino | 7 |
Male | Unknown or Not Reported | Unknown/Not Reported Ethnicity | 0 |
Unknown/Not Reported | American Indian/Alaska Native | Not Hispanic or Latino | 0 |
Unknown/Not Reported | American Indian/Alaska Native | Hispanic or Latino | 0 |
Unknown/Not Reported | American Indian/Alaska Native | Unknown/Not Reported Ethnicity | 0 |
Unknown/Not Reported | Asian | Not Hispanic or Latino | 0 |
Unknown/Not Reported | Asian | Hispanic or Latino | 0 |
Unknown/Not Reported | Asian | Unknown/Not Reported Ethnicity | 0 |
Unknown/Not Reported | Native Hawaiian or Other Pacific Islander | Not Hispanic or Latino | 0 |
Unknown/Not Reported | Native Hawaiian or Other Pacific Islander | Hispanic or Latino | 0 |
Unknown/Not Reported | Native Hawaiian or Other Pacific Islander | Unknown/Not Reported Ethnicity | 0 |
Unknown/Not Reported | Black or African American | Not Hispanic or Latino | 0 |
Unknown/Not Reported | Black or African American | Hispanic or Latino | 0 |
Unknown/Not Reported | Black or African American | Unknown/Not Reported Ethnicity | 0 |
Unknown/Not Reported | White | Not Hispanic or Latino | 0 |
Unknown/Not Reported | White | Hispanic or Latino | 0 |
Unknown/Not Reported | White | Unknown/Not Reported Ethnicity | 0 |
Unknown/Not Reported | More than One Race | Not Hispanic or Latino | 0 |
Unknown/Not Reported | More than One Race | Hispanic or Latino | 0 |
Unknown/Not Reported | More than One Race | Unknown/Not Reported Ethnicity | 0 |
Unknown/Not Reported | Unknown or Not Reported | Not Hispanic or Latino | 0 |
Unknown/Not Reported | Unknown or Not Reported | Hispanic or Latino | 0 |
Unknown/Not Reported | Unknown or Not Reported | Unknown/Not Reported Ethnicity | 0 |
codified::table_nih_enrollment_pretty(
d = ds,
d_lu_gender = ds_lu_gender,
d_lu_race = ds_lu_race,
d_lu_ethnicity = ds_lu_ethnicity
)
Racial Categories | Female | Male |
Unknown/ Not Reported |
Female | Male |
Unknown/ Not Reported |
Female | Male |
Unknown/ Not Reported |
---|---|---|---|---|---|---|---|---|---|
American Indian/Alaska Native | 1 | 0 | 0 | 8 | 10 | 0 | 0 | 0 | 0 |
Asian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Native Hawaiian or Other Pacific Islander | 1 | 1 | 0 | 28 | 22 | 0 | 3 | 1 | 0 |
Black or African American | 1 | 5 | 0 | 172 | 154 | 0 | 14 | 6 | 0 |
White | 1 | 0 | 0 | 22 | 33 | 0 | 2 | 1 | 0 |
More than One Race | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Unknown or Not Reported | 0 | 0 | 0 | 7 | 7 | 0 | 0 | 0 | 0 |
A hosted (fake) clinical trial dataset demonstrates how to extract demographic data from REDCap and then present the demographic data in the NIH Inclusion Enrollment Report format.
First, install the REDCapR
package if necessary, and then load it into memory.
if( !requireNamespace("REDCapR", quietly=T) )
devtools::install_github("OuhscBbmc/REDCapR")
library(REDCapR)
Next, download the data from the REDCap database into the ds_2
data.frame. If you’re running the most recent version of REDCapR (available on GitHub), the code will be:
ds_2 <- REDCapR::redcap_read_oneshot(
redcap_uri = "https://bbmc.ouhsc.edu/redcap/api/", # URL of REDCap Server.
token = "F304DEC3793FECC3B6DEEFF66302CAD3", # User-specific token/password.
guess_type = FALSE # Keep all variables as strings/characters.
)$data
The following code is more complicated than normal, because the vignette has to account for different versions of REDCapR being installed on the machine.
if( !requireNamespace("REDCapR", quietly=TRUE) ) {
ds <- ds_2 # If REDCapR isn't installed, use the previous version of the dataset.
} else if( "0.9.8" < packageVersion("REDCapR") ) {
ds_2 <- REDCapR::redcap_read_oneshot(
redcap_uri = "https://bbmc.ouhsc.edu/redcap/api/", # URL of REDCap Server.
token = "F304DEC3793FECC3B6DEEFF66302CAD3", # User-specific token/password.
guess_type = FALSE # Keep all variables as strings/characters.
)$data
} else {
# Older versions of REDCapR don't have the `guess_type` parameter
ds_2 <- REDCapR::redcap_read_oneshot(
redcap_uri = "https://bbmc.ouhsc.edu/redcap/api/", # URL of REDCap Server.
token = "F304DEC3793FECC3B6DEEFF66302CAD3" # User-specific token/password.
)$data %>%
dplyr::mutate(
gender = as.character(gender),
race = as.character(race),
ethnicity = as.character(ethnicity)
)
}
## 500 records and 13 columns were read from REDCap in 1.3 seconds. The http status code was 200.
Now, convert these demographic data into a properly formatted NIH enrollment table. Pass the ds_lu_gender
, ds_lu_race
, and ds_lu_ethnicity
metadata, which was defined above. As a reminder, these translate values like 1
to Male
and 3
to Native Hawaiian or Other Pacific Islander
.
table_nih_enrollment_pretty(
d = ds_2,
d_lu_gender = ds_lu_gender,
d_lu_race = ds_lu_race,
d_lu_ethnicity = ds_lu_ethnicity
)
Racial Categories | Female | Male |
Unknown/ Not Reported |
Female | Male |
Unknown/ Not Reported |
Female | Male |
Unknown/ Not Reported |
---|---|---|---|---|---|---|---|---|---|
American Indian/Alaska Native | 1 | 0 | 0 | 8 | 10 | 0 | 0 | 0 | 0 |
Asian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Native Hawaiian or Other Pacific Islander | 1 | 1 | 0 | 28 | 22 | 0 | 3 | 1 | 0 |
Black or African American | 1 | 5 | 0 | 172 | 154 | 0 | 14 | 6 | 0 |
White | 1 | 0 | 0 | 22 | 33 | 0 | 2 | 1 | 0 |
More than One Race | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Unknown or Not Reported | 0 | 0 | 0 | 7 | 7 | 0 | 0 | 0 | 0 |
Many observed datasets may collect race with a different set of levels. For instance in ds_3
, the American Indian
level is separate from the Alaska Native
level. In the first and second rows in the metadata below, the two levels are effectively combined into theAmerican Indian/Alaska Native
level, so it complies with the format of the NIH Enrollment table.
ds_lu_race_3 <- tibble::tribble(
~input , ~displayed ,
"American Indian" , "American Indian/Alaska Native" , # Combine w/ Alaska Native
"Alaska Native" , "American Indian/Alaska Native" , # Combine w/ American Indian
"Asian" , "Asian" ,
"Native Hawaiian" , "Native Hawaiian or Other Pacific Islander" , # Combine w/ Pacific Islanders
"Pacific Islander" , "Native Hawaiian or Other Pacific Islander" , # Combine w/ Hawaiian
"Black or African American" , "Black or African American" ,
"White" , "White" ,
"More than One Race" , "More than One Race" ,
"Unknown or Not Reported" , "Unknown or Not Reported"
)
ds_3 <- tibble::tribble(
~subject_id, ~gender , ~race , ~ethnicity ,
1L, "Female" , "American Indian", "Not Hispanic or Latino" ,
2L, "Male" , "American Indian", "Not Hispanic or Latino" ,
3L, "Male" , "American Indian", "Not Hispanic or Latino" ,
4L, "Female" , "Alaska Native" , "Not Hispanic or Latino" ,
5L, "Male" , "Alaska Native" , "Not Hispanic or Latino" ,
6L, "Male" , "Alaska Native" , "Not Hispanic or Latino" ,
7L, "Male" , "White" , "Not Hispanic or Latino" ,
8L, "Male" , "White" , "Not Hispanic or Latino"
)
table_nih_enrollment_pretty(
d = ds_3,
d_lu_race = ds_lu_race_3
)
Racial Categories | Female | Male |
Unknown/ Not Reported |
Female | Male |
Unknown/ Not Reported |
Female | Male |
Unknown/ Not Reported |
---|---|---|---|---|---|---|---|---|---|
American Indian/Alaska Native | 2 | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Asian | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Native Hawaiian or Other Pacific Islander | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Black or African American | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
White | 0 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
More than One Race | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Unknown or Not Reported | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Please share your opinions with us by creating an issue at https://github.com/OuhscBbmc/codified/issues.
Upcoming Features
Gender
instead of gender
). Issue #3.Group discussion