mirror of
https://github.com/agdamsbo/REDCapCAST.git
synced 2024-11-24 14:01:55 +01:00
93 lines
2.0 KiB
Plaintext
93 lines
2.0 KiB
Plaintext
---
|
|
title: "Shiny-app"
|
|
output: rmarkdown::html_vignette
|
|
vignette: >
|
|
%\VignetteIndexEntry{Shiny-app}
|
|
%\VignetteEngine{knitr::rmarkdown}
|
|
%\VignetteEncoding{UTF-8}
|
|
---
|
|
|
|
```{r, include = FALSE}
|
|
knitr::opts_chunk$set(
|
|
collapse = TRUE,
|
|
comment = "#>"
|
|
)
|
|
```
|
|
|
|
To make the easiest possible transition from spreadsheet/dataset to REDCap, I have created a small app, which adds a graphical interface to the casting of a data dictionary and data upload. Install the package and launch the app as follows:
|
|
|
|
```{r eval=FALSE}
|
|
REDCapCAST::shiny_cast()
|
|
```
|
|
|
|
The app primarily wraps one function: `ds2dd_detailed()`.
|
|
|
|
```{r}
|
|
library(REDCapCAST)
|
|
ds <- REDCap_split(
|
|
records = redcapcast_data,
|
|
metadata = redcapcast_meta,
|
|
forms = "all"
|
|
) |>
|
|
sanitize_split() |>
|
|
redcap_wider()
|
|
str(ds)
|
|
```
|
|
|
|
```{r}
|
|
ds|>
|
|
ds2dd_detailed()|>
|
|
purrr::pluck("data") |>
|
|
str()
|
|
```
|
|
|
|
```{r}
|
|
ds|>
|
|
ds2dd_detailed()|>
|
|
purrr::pluck("meta") |>
|
|
head(10)
|
|
```
|
|
|
|
Different data formats are accepted, which all mostly implements the `readr::col_guess()` functionality to parse column classes.
|
|
|
|
To ensure uniformity in data import this parsing has been implemented on its own to use with `ds2dd_detailed()` or any other data set for that matter:
|
|
|
|
```{r}
|
|
ds_parsed <- redcapcast_data |>
|
|
dplyr::mutate(dplyr::across(dplyr::everything(),as.character)) |>
|
|
parse_data()
|
|
str(ds_parsed)
|
|
```
|
|
|
|
It will ignore specified columns, which is neat for numeric-looking strings like cpr-with a leading 0:
|
|
|
|
```{r}
|
|
redcapcast_data |>
|
|
dplyr::mutate(dplyr::across(dplyr::everything(),as.character)) |>
|
|
parse_data(ignore.vars = c("record_id","cpr")) |>
|
|
str()
|
|
```
|
|
|
|
|
|
```{r}
|
|
|
|
```
|
|
|
|
|
|
Column classes can be passed to `parse_data()`.
|
|
|
|
Making a few crude assumption for factorising data, `numchar2fct()` factorises numerical and character vectors based on a set threshold for unique values:
|
|
|
|
```{r}
|
|
mtcars |> str()
|
|
mtcars |>
|
|
numchar2fct(numeric.threshold = 6) |>
|
|
str()
|
|
```
|
|
|
|
```{r}
|
|
ds_parsed|>
|
|
numchar2fct(numeric.threshold = 2) |>
|
|
str()
|
|
```
|