Pharmaverse Onboarding
Who this is for
This guide is written for experienced clinical SAS programmers who are new to R. You already understand the hard stuff: CDISC standards, ADaM and SDTM structures, clinical trial data, and the FDA regulatory expectations that govern everything we build.
R is new syntax for familiar concepts. That context compresses the learning curve significantly — more than you might expect.
The goal of this guide is a structured, low-pressure path toward:
- A working R environment and GitHub presence
- Familiarity with the pharmaverse package ecosystem
- Participation in the 2026 Pharmaverse Hackathon series
What is pharmaverse?
Pharmaverse is a curated ecosystem of open-source R packages purpose-built for clinical reporting and regulatory submission. The packages are developed collaboratively across companies — Roche, GSK, Novartis, AstraZeneca, Pfizer, and many others — and maintained to CDISC standards.
The key insight is that no single company needs to solve the same clinical programming problem alone. Pharmaverse packages handle SDTM-to-ADaM derivation, metadata management, output generation, transport file creation, and more — all interoperable, all openly maintained.
The best single starting point is the pharmaverse examples site, which shows realistic end-to-end clinical programming workflows using the actual package ecosystem. Browse it early and often.
Your SAS background is an asset
A common misconception is that switching from SAS to R means starting over. It doesn’t — at least not in clinical programming.
| In SAS you know… | In pharmaverse R this maps to… |
|---|---|
| PROC SORT / DATA step merges | derive_vars_merged(), derive_vars_joined() in {admiral} |
| ADaM ADSL population flags | derive_var_extreme_flag(), derive_var_merged_exist_flag() |
| ADaM analysis visit/timing | derive_vars_dt(), derive_vars_dtm(), derive_var_ady() |
| Controlled terminology lookups | ct_map() in {admiralvaccine}; {metacore} + {metatools} |
| PROC REPORT / PROC TABULATE | {gtsummary}, {rtables}, {tfrmt} |
| XPT transport files | xportr_write(), xportr_label() in {xportr} |
| Macro variables / %LET | R objects; {metacore} for spec-driven metadata |
The CDISC logic you already carry — derivation rules, population flags, timing conventions — translates directly. You’re learning a new instrument, not a new song.
How to use this guide
Use the navigation above to work through the steps at your own pace. The Getting Started page walks through environment setup and key package sites. The 2026 Hackathons page covers the official pharmaverse hackathon series and how to prepare for it.
There is no deadline pressure. The Resources page collects additional links for going deeper at your own pace.
Head to Getting Started → to set up R and create your GitHub account.