mirror of
https://github.com/agdamsbo/REDCapCAST.git
synced 2026-06-19 13:17:30 +02:00
152 lines
4.3 KiB
Markdown
152 lines
4.3 KiB
Markdown
# Transforms list of REDCap data.frames to a single wide data.frame
|
||
|
||
Converts a list of REDCap data.frames from long to wide format. In
|
||
essence it is a wrapper for the
|
||
[pivot_wider](https://tidyr.tidyverse.org/reference/pivot_wider.html)
|
||
function applied on a REDCap output (from
|
||
[read_redcap_tables](https://agdamsbo.github.io/REDCapCAST/reference/read_redcap_tables.md))
|
||
or manually split by
|
||
[REDCap_split](https://agdamsbo.github.io/REDCapCAST/reference/REDCap_split.md).
|
||
|
||
## Usage
|
||
|
||
``` r
|
||
redcap_wider(
|
||
data,
|
||
event.glue = "{.value}____{redcap_event_name}",
|
||
inst.glue = "{.value}____{redcap_repeat_instance}"
|
||
)
|
||
```
|
||
|
||
## Arguments
|
||
|
||
- data:
|
||
|
||
A list of data frames
|
||
|
||
- event.glue:
|
||
|
||
A [glue](https://glue.tidyverse.org/reference/glue.html) string for
|
||
repeated events naming
|
||
|
||
- inst.glue:
|
||
|
||
A [glue](https://glue.tidyverse.org/reference/glue.html) string for
|
||
repeated instruments naming
|
||
|
||
## Value
|
||
|
||
data.frame in wide format
|
||
|
||
## Examples
|
||
|
||
``` r
|
||
# Longitudinal
|
||
list1 <- list(
|
||
data.frame(
|
||
record_id = c(1, 2, 1, 2),
|
||
redcap_event_name = c("baseline", "baseline", "followup", "followup"),
|
||
age = c(25, 26, 27, 28)
|
||
),
|
||
data.frame(
|
||
record_id = c(1, 2),
|
||
redcap_event_name = c("baseline", "baseline"),
|
||
gender = c("male", "female")
|
||
)
|
||
)
|
||
redcap_wider(list1)
|
||
#> Joining with `by = join_by(record_id)`
|
||
#> # A tibble: 2 × 4
|
||
#> record_id age____baseline age____followup gender
|
||
#> <dbl> <dbl> <dbl> <chr>
|
||
#> 1 1 25 27 male
|
||
#> 2 2 26 28 female
|
||
# Simpel with two instruments
|
||
list2 <- list(
|
||
data.frame(
|
||
record_id = c(1, 2),
|
||
age = c(25, 26)
|
||
),
|
||
data.frame(
|
||
record_id = c(1, 2),
|
||
gender = c("male", "female")
|
||
)
|
||
)
|
||
redcap_wider(list2)
|
||
#> Joining with `by = join_by(record_id)`
|
||
#> record_id age gender
|
||
#> 1 1 25 male
|
||
#> 2 2 26 female
|
||
# Simple with single instrument
|
||
list3 <- list(data.frame(
|
||
record_id = c(1, 2),
|
||
age = c(25, 26)
|
||
))
|
||
redcap_wider(list3)
|
||
#> record_id age
|
||
#> 1 1 25
|
||
#> 2 2 26
|
||
# Longitudinal with repeatable instruments
|
||
list4 <- list(
|
||
data.frame(
|
||
record_id = c(1, 2, 1, 2),
|
||
redcap_event_name = c("baseline", "baseline", "followup", "followup"),
|
||
age = c(25, 26, 27, 28)
|
||
),
|
||
data.frame(
|
||
record_id = c(1, 1, 1, 1, 2, 2, 2, 2),
|
||
redcap_event_name = c(
|
||
"baseline", "baseline", "followup", "followup",
|
||
"baseline", "baseline", "followup", "followup"
|
||
),
|
||
redcap_repeat_instrument = "walk",
|
||
redcap_repeat_instance = c(1, 2, 1, 2, 1, 2, 1, 2),
|
||
dist = c(40, 32, 25, 33, 28, 24, 23, 36)
|
||
),
|
||
data.frame(
|
||
record_id = c(1, 2),
|
||
redcap_event_name = c("baseline", "baseline"),
|
||
gender = c("male", "female")
|
||
)
|
||
)
|
||
redcap_wider(list4)
|
||
#> Joining with `by = join_by(record_id)`
|
||
#> Joining with `by = join_by(record_id)`
|
||
#> # A tibble: 2 × 8
|
||
#> record_id age____baseline age____followup dist____1____baseline
|
||
#> <dbl> <dbl> <dbl> <dbl>
|
||
#> 1 1 25 27 40
|
||
#> 2 2 26 28 28
|
||
#> # ℹ 4 more variables: dist____1____followup <dbl>, dist____2____baseline <dbl>,
|
||
#> # dist____2____followup <dbl>, gender <chr>
|
||
|
||
list5 <- list(
|
||
data.frame(
|
||
record_id = c(1, 2, 1, 2),
|
||
redcap_event_name = c("baseline", "baseline", "followup", "followup")
|
||
),
|
||
data.frame(
|
||
record_id = c(1, 1, 1, 1, 2, 2, 2, 2),
|
||
redcap_event_name = c(
|
||
"baseline", "baseline", "followup", "followup",
|
||
"baseline", "baseline", "followup", "followup"
|
||
),
|
||
redcap_repeat_instrument = "walk",
|
||
redcap_repeat_instance = c(1, 2, 1, 2, 1, 2, 1, 2),
|
||
dist = c(40, 32, 25, 33, 28, 24, 23, 36)
|
||
),
|
||
data.frame(
|
||
record_id = c(1, 2),
|
||
redcap_event_name = c("baseline", "baseline"),
|
||
gender = c("male", "female")
|
||
)
|
||
)
|
||
redcap_wider(list5)
|
||
#> Joining with `by = join_by(record_id)`
|
||
#> # A tibble: 2 × 6
|
||
#> record_id dist____1____baseline dist____1____followup dist____2____baseline
|
||
#> <dbl> <dbl> <dbl> <dbl>
|
||
#> 1 1 40 25 32
|
||
#> 2 2 28 23 24
|
||
#> # ℹ 2 more variables: dist____2____followup <dbl>, gender <chr>
|
||
```
|