mirror of
https://github.com/agdamsbo/REDCapCAST.git
synced 2024-11-22 13:30:23 +01:00
Merge pull request #14 from SpectrumHealthResearch/issue12
REDCap_split() now compatible with tibbles
This commit is contained in:
commit
c0c74e67d1
@ -1,6 +1,6 @@
|
||||
Package: REDCapRITS
|
||||
Title: REDCap Repeating Instrument Table Splitter
|
||||
Version: 0.2.0
|
||||
Version: 0.2.1
|
||||
Authors@R: c(
|
||||
person("Paul", "Egeler", email = "paul.egeler@spectrumhealth.org", role = c("aut", "cre")),
|
||||
person("Spectrum Health, Grand Rapids, MI", role = "cph"))
|
||||
@ -14,7 +14,8 @@ Suggests:
|
||||
httr,
|
||||
jsonlite,
|
||||
testthat,
|
||||
Hmisc
|
||||
Hmisc,
|
||||
readr
|
||||
License: GPL-3
|
||||
Encoding: UTF-8
|
||||
LazyData: true
|
||||
|
@ -1,4 +1,8 @@
|
||||
# REDCapRITS 0.2.0 (Release date: 2019-??-??)
|
||||
# REDCapRITS 0.2.1 (Release date: 2019-07-26)
|
||||
|
||||
* [bug] Can now accept `"tbl_df"` objects and `NA`s in the `redcap_repeat_instrument` field. (#12)
|
||||
|
||||
# REDCapRITS 0.2.0 (Release date: 2019-07-08)
|
||||
|
||||
* [feature] User can now separate each form into its own data.frame, regardless if it is a repeating instrument or not. (#10)
|
||||
* [bug] Handles auto-generated form timestamp fields.
|
||||
|
@ -87,7 +87,7 @@ REDCap_split <- function(records,
|
||||
|
||||
# Process user input
|
||||
records <- process_user_input(records)
|
||||
metadata <- process_user_input(metadata)
|
||||
metadata <- as.data.frame(process_user_input(metadata)) # See issue #12
|
||||
|
||||
# Get the variable names in the dataset
|
||||
vars_in_data <- names(records)
|
||||
@ -100,6 +100,15 @@ REDCap_split <- function(records,
|
||||
stop("There are no repeating instruments in this dataset.")
|
||||
}
|
||||
|
||||
# Remove NAs from `redcap_repeat_instrument` (see issue #12)
|
||||
if(any(is.na(records$redcap_repeat_instrument))) {
|
||||
records$redcap_repeat_instrument <- ifelse(
|
||||
is.na(records$redcap_repeat_instrument),
|
||||
"",
|
||||
as.character(records$redcap_repeat_instrument)
|
||||
)
|
||||
}
|
||||
|
||||
# Standardize variable names for metadata
|
||||
names(metadata) <- metadata_names
|
||||
|
||||
|
@ -13,7 +13,7 @@ process_user_input.default <- function(x, ...) {
|
||||
}
|
||||
|
||||
process_user_input.data.frame <- function(x, ...) {
|
||||
x
|
||||
x
|
||||
}
|
||||
|
||||
process_user_input.character <- function(x, ...) {
|
||||
|
@ -13,10 +13,10 @@ records <- read.csv(
|
||||
)
|
||||
)
|
||||
|
||||
redcap_output_csv1 <- REDCap_split(records, metadata)
|
||||
|
||||
# Test that basic CSV export matches reference ------------------------------
|
||||
test_that("CSV export matches reference", {
|
||||
redcap_output_csv1 <- REDCap_split(records, metadata)
|
||||
|
||||
expect_known_hash(redcap_output_csv1, "f74558d1939c17d9ff0e08a19b956e26")
|
||||
})
|
||||
|
||||
@ -29,3 +29,42 @@ if (requireNamespace("Hmisc", quietly = TRUE)) {
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
if (requireNamespace("readr", quietly = TRUE)) {
|
||||
|
||||
context("Compatibility with readr")
|
||||
|
||||
metadata <- readr::read_csv(
|
||||
get_data_location(
|
||||
"ExampleProject_DataDictionary_2018-06-07.csv"
|
||||
)
|
||||
)
|
||||
|
||||
records <- readr::read_csv(
|
||||
get_data_location(
|
||||
"ExampleProject_DATA_2018-06-07_1129.csv"
|
||||
)
|
||||
)
|
||||
|
||||
redcap_output_readr <- REDCap_split(records, metadata)
|
||||
|
||||
expect_matching_elements <- function(FUN) {
|
||||
FUN <- match.fun(FUN)
|
||||
expect_identical(
|
||||
lapply(redcap_output_readr, FUN),
|
||||
lapply(redcap_output_csv1, FUN)
|
||||
)
|
||||
}
|
||||
|
||||
test_that("Result of data read in with `readr` will match result with `read.csv`", {
|
||||
|
||||
# The list itself
|
||||
expect_identical(length(redcap_output_readr), length(redcap_output_csv1))
|
||||
expect_identical(names(redcap_output_readr), names(redcap_output_csv1))
|
||||
|
||||
# Each element of the list
|
||||
expect_matching_elements(names)
|
||||
expect_matching_elements(dim)
|
||||
})
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user