mirror of
https://github.com/agdamsbo/REDCapCAST.git
synced 2024-11-22 13:30:23 +01:00
Closes #1. Allow R code to handle checkbox fields.
This commit is contained in:
parent
91ff2c6e29
commit
cd8787fa9a
@ -26,12 +26,6 @@
|
|||||||
#' token = api_token,
|
#' token = api_token,
|
||||||
#' content = 'record',
|
#' content = 'record',
|
||||||
#' format = 'json',
|
#' format = 'json',
|
||||||
#' type = 'flat',
|
|
||||||
#' rawOrLabel = 'raw',
|
|
||||||
#' rawOrLabelHeaders = 'raw',
|
|
||||||
#' exportCheckboxLabel = 'false',
|
|
||||||
#' exportSurveyFields = 'false',
|
|
||||||
#' exportDataAccessGroups = 'false',
|
|
||||||
#' returnFormat = 'json'
|
#' returnFormat = 'json'
|
||||||
#' )
|
#' )
|
||||||
#'
|
#'
|
||||||
@ -56,9 +50,38 @@ REDCap_split <- function(records, metadata) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Clean the metadata
|
# Find the fields and associated form
|
||||||
metadata <-
|
fields <- metadata[
|
||||||
metadata[metadata$field_type != "descriptive", c("field_name", "form_name")]
|
!metadata$field_type %in% c("descriptive", "checkbox"),
|
||||||
|
c("field_name", "form_name")
|
||||||
|
]
|
||||||
|
|
||||||
|
if (any(metadata$field_type == "checkbox")) {
|
||||||
|
|
||||||
|
checkbox_basenames <- metadata[
|
||||||
|
metadata$field_type == "checkbox",
|
||||||
|
c("field_name", "form_name")
|
||||||
|
]
|
||||||
|
|
||||||
|
checkbox_fields <-
|
||||||
|
do.call(
|
||||||
|
"rbind",
|
||||||
|
apply(
|
||||||
|
checkbox_basenames,
|
||||||
|
1,
|
||||||
|
function(x)
|
||||||
|
data.frame(
|
||||||
|
field_name = names(records)[grepl(paste0("^", x[1], "___.+$"), names(records))],
|
||||||
|
form_name = x[2],
|
||||||
|
stringsAsFactors = FALSE,
|
||||||
|
row.names = NULL
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
fields <- rbind(fields, checkbox_fields)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
# Identify the subtables in the data
|
# Identify the subtables in the data
|
||||||
subtables <- unique(records$redcap_repeat_instrument)
|
subtables <- unique(records$redcap_repeat_instrument)
|
||||||
@ -73,12 +96,12 @@ REDCap_split <- function(records, metadata) {
|
|||||||
if (i == "") {
|
if (i == "") {
|
||||||
|
|
||||||
out[[which(names(out) == "")]] <-
|
out[[which(names(out) == "")]] <-
|
||||||
out[[which(names(out) == "")]][metadata[!metadata[,2] %in% subtables, 1]]
|
out[[which(names(out) == "")]][fields[!fields[,2] %in% subtables, 1]]
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
out[[i]] <-
|
out[[i]] <-
|
||||||
out[[i]][c(names(records[1:3]),metadata[metadata[,2] == i, 1])]
|
out[[i]][c(names(records[1:3]),fields[fields[,2] == i, 1])]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user