LNCD

Table of Contents

  • LNCD Home
  • Administration
  • Notebooks
  • Journal Club Presentations
  • Publications
  • Current Projects
  • Completed Projects
  • Current Grants
  • Datasets by Project
  • Brain ROIs and Measures
  • ️Tools And Methods
  • Big Data
  • RA Homepage
  • Recent Changes
  • Maintenance
  • Site Map
  • Random Page
LNCD
Docs » REDCap Data

REDCap Data

We use the API to download redcap data to csv and RData files that can easily be ingested by other scripts.

This is done automatically by Cron on Rhea (linux server) (as foranw@rhea)

  • /Volumes/Hera/Projects/Habit/behave/redcap/00_get.R → data/habit_redcap.csv
  • :/Volumes/Hera/Projects/SPA/scripts/redcap/00_get.R → spa_redcap.RData

Data Shape

As exported, data is in “fake wide” format. Rows are repeated by event (`behave`,`mr`,`behave_2`, `mr_2`, etc) but columns exist for all field labels for all events.

For instance, recuit_age is only presented during recruit, so it is NA for all other redcap_event_names

record_id redcap_event_name recruit_age enroll_date demo_age ptx_mp2rage_onset
11751 recruit_arm_1 23
11751 screener_arm_1
11751 behavioral_arm_1 2023-12-06
11751 mr_arm_1 2023-12-08 09:06:00

To make truly wide, subset columns for each event name of interest and merge back. Example pulled from /Volumes/Hera/Projects/SPA/scripts/redcap/age_visit_histogram.R

# remove '_arm_1' parse visit number from event name
rm_arm <- function(d)
  d |> mutate(redcap_event_name=gsub('_arm_1','',redcap_event_name),
              visitno=str_extract(redcap_event_name, '[0-9]$'),
              visitno=ifelse(is.na(visitno), 1, visitno))
 
d.behave <- lunas |>
  select(luna=record_id, redcap_event_name,
         age=demo_age, behave=behave_starttime) |>
  filter(!is.na(behave)) |>
  rm_arm()
d.mri <- lunas |>
  select(luna=record_id, redcap_event_name,
         ptx=ptx_mp2rage_onset)|>
  filter(!is.na(ptx)) |>
  rm_arm()
 
d_wide <- left_join(d.behave, d.mri, by=c("luna","visitno"))
 
d_wide |>
  rename_with(\(x) gsub('redcap_event_name','name', x)) |>
  filter(luna %in% c(11751,11823))
luna name.x age behave visitno name.y ptx
11751 behavioral 2023-12-06 08:21:39 1 mr 2023-12-08 09:06:00
11823 behavioral 13 2024-08-09 14:51:18 1
Previous Next