# Redcap Wider — redcap_wider • REDCapCAST
Converts a list of REDCap data frames from long to wide format. Handles longitudinal projects, but not yet repeated instruments.

Skip to contents

# Redcap Wider

Source: `R/redcap_wider.R`
`redcap_wider.Rd`

Converts a list of REDCap data frames from long to wide format. Handles longitudinal projects, but not yet repeated instruments.

## Usage

    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 dplyr::glue string for repeated events naming

inst.glue

  A dplyr::glue string for repeated instruments naming

## Value

The list of data frames in wide format.

## Examples

    # 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)`
    #>   record_id age_baseline age_followup gender
    #> 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)`
    #>   record_id age_baseline age_followup dist_1_baseline dist_1_followup
    #> 1         1           25           27              40              25
    #> 2         2           26           28              28              23
    #>   dist_2_baseline dist_2_followup gender
    #> 1              32              33   male
    #> 2              24              36 female