mirror of
https://github.com/agdamsbo/REDCapCAST.git
synced 2024-11-25 14:21:54 +01:00
Cleaning up R code and adding RStudio project.
This commit is contained in:
parent
f25319366c
commit
cbc39e288e
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1,3 @@
|
|||||||
*.html
|
*.html
|
||||||
.Rhistory
|
.Rhistory
|
||||||
|
.Rproj.user
|
||||||
|
16
REDCapRITS.Rproj
Normal file
16
REDCapRITS.Rproj
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
Version: 1.0
|
||||||
|
|
||||||
|
RestoreWorkspace: Default
|
||||||
|
SaveWorkspace: Default
|
||||||
|
AlwaysSaveHistory: Default
|
||||||
|
|
||||||
|
EnableCodeIndexing: Yes
|
||||||
|
UseSpacesForTab: Yes
|
||||||
|
NumSpacesForTab: 2
|
||||||
|
Encoding: UTF-8
|
||||||
|
|
||||||
|
RnwWeave: Sweave
|
||||||
|
LaTeX: pdfLaTeX
|
||||||
|
|
||||||
|
AutoAppendNewline: Yes
|
||||||
|
StripTrailingWhitespace: Yes
|
@ -1,7 +1,6 @@
|
|||||||
# v0.0.0
|
|
||||||
#' Split REDCap repeating instruments table into multiple tables
|
#' Split REDCap repeating instruments table into multiple tables
|
||||||
#'
|
#'
|
||||||
#' This will take a raw data frame from REDCap and split it into a base table
|
#' This will take a raw \code{data.frame} from REDCap and split it into a base table
|
||||||
#' and give individual tables for each repeating instrument. Metadata
|
#' and give individual tables for each repeating instrument. Metadata
|
||||||
#' is used to determine which fields should be included in each resultant table.
|
#' is used to determine which fields should be included in each resultant table.
|
||||||
#'
|
#'
|
||||||
@ -12,7 +11,7 @@
|
|||||||
#' \dontrun{
|
#' \dontrun{
|
||||||
#' library(jsonlite)
|
#' library(jsonlite)
|
||||||
#' library(RCurl)
|
#' library(RCurl)
|
||||||
#'
|
#'
|
||||||
#' # Get the metadata
|
#' # Get the metadata
|
||||||
#' result.meta <- postForm(
|
#' result.meta <- postForm(
|
||||||
#' api_url,
|
#' api_url,
|
||||||
@ -20,7 +19,7 @@
|
|||||||
#' content = 'metadata',
|
#' content = 'metadata',
|
||||||
#' format = 'json'
|
#' format = 'json'
|
||||||
#' )
|
#' )
|
||||||
#'
|
#'
|
||||||
#' # Get the records
|
#' # Get the records
|
||||||
#' result.record <- postForm(
|
#' result.record <- postForm(
|
||||||
#' uri = api_url,
|
#' uri = api_url,
|
||||||
@ -35,7 +34,7 @@
|
|||||||
#' exportDataAccessGroups = 'false',
|
#' exportDataAccessGroups = 'false',
|
||||||
#' returnFormat = 'json'
|
#' returnFormat = 'json'
|
||||||
#' )
|
#' )
|
||||||
#'
|
#'
|
||||||
#' records <- fromJSON(result.record)
|
#' records <- fromJSON(result.record)
|
||||||
#' metadata <- fromJSON(result.meta)
|
#' metadata <- fromJSON(result.meta)
|
||||||
#'
|
#'
|
||||||
@ -45,43 +44,46 @@
|
|||||||
#' @export
|
#' @export
|
||||||
REDCap_split <- function(records, metadata) {
|
REDCap_split <- function(records, metadata) {
|
||||||
|
|
||||||
# Check to see if there were any repeating instruments
|
stopifnot(all(sapply(list(records,metadata), inherits, "data.frame")))
|
||||||
|
|
||||||
if (!any(names(records) == "redcap_repeat_instrument")) {
|
# Check to see if there were any repeating instruments
|
||||||
|
|
||||||
warning("There are no repeating instruments.\n")
|
if (!any(names(records) == "redcap_repeat_instrument")) {
|
||||||
|
|
||||||
return(list(records))
|
message("There are no repeating instruments in this data.")
|
||||||
|
|
||||||
}
|
return(list(records))
|
||||||
|
|
||||||
# Clean the metadata
|
}
|
||||||
metadata <- metadata[metadata["field_type"] != "descriptive", 1:4]
|
|
||||||
|
|
||||||
# Identify the subtables in the data
|
# Clean the metadata
|
||||||
subtables <- unique(records["redcap_repeat_instrument"])
|
metadata <-
|
||||||
subtables <- subtables[subtables != ""]
|
metadata[metadata$field_type != "descriptive", c("field_name", "form_name")]
|
||||||
|
|
||||||
# Split the table based on instrument
|
# Identify the subtables in the data
|
||||||
out <- split.data.frame(records, records["redcap_repeat_instrument"])
|
subtables <- unique(records$redcap_repeat_instrument)
|
||||||
|
subtables <- subtables[subtables != ""]
|
||||||
|
|
||||||
# Delete the variables that are not relevant
|
# Split the table based on instrument
|
||||||
for (i in names(out)) {
|
out <- split.data.frame(records, records$redcap_repeat_instrument)
|
||||||
|
|
||||||
if (i == "") {
|
# Delete the variables that are not relevant
|
||||||
|
for (i in names(out)) {
|
||||||
|
|
||||||
out[[which(names(out) == "")]] <-
|
if (i == "") {
|
||||||
out[[which(names(out) == "")]][metadata[`!`(metadata[,2] %in% subtables), 1]]
|
|
||||||
|
|
||||||
} else {
|
out[[which(names(out) == "")]] <-
|
||||||
|
out[[which(names(out) == "")]][metadata[!metadata[,2] %in% subtables, 1]]
|
||||||
|
|
||||||
out[[i]] <-
|
} else {
|
||||||
out[[i]][c(names(records[1:3]),metadata[metadata[,2] == i, 1])]
|
|
||||||
|
|
||||||
}
|
out[[i]] <-
|
||||||
|
out[[i]][c(names(records[1:3]),metadata[metadata[,2] == i, 1])]
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return(out)
|
}
|
||||||
|
|
||||||
|
return(out)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user