metrumresearchgroup / yspec

Data Specification for Pharmacometrics
https://metrumresearchgroup.github.io/yspec
5 stars 2 forks source link

Refactor nm_input #150

Closed kylebaron closed 1 month ago

kylebaron commented 1 month ago

Examples

library(yspec)

spek <- ys_help$spec() 
spec <- ys_select(spek, ID, NUM,  EVID, RF, ALT, BMI, PHASE, STUDY, AMT, DV)

Default, wide

nm_input(spek)
#> $INPUT
#> C NUM ID SUBJ=DROP TIME SEQ CMT EVID AMT DV AGE WT CRCL ALB BMI
#> AAG SCR AST ALT HT CP TAFD TAD LDOS MDV BLQ PHASE STUDY RF=DROP

Drop

nm_input(spec, .drop = "PHASE")
#> $INPUT
#> ID NUM EVID RF=DROP ALT BMI PHASE=DROP STUDY AMT DV

Rename

nm_input(spec, DOSE = AMT)
#> $INPUT
#> ID NUM EVID RF=DROP ALT BMI PHASE STUDY DOSE=AMT DV

Long

nm_input(spec, .long = TRUE)
#> $INPUT
#> ID      ; subject identifier
#> NUM     ; record number
#> EVID    ; event ID
#> RF=DROP ; renal function stage
#> ALT     ; alanine aminotransferase
#> BMI     ; BMI
#> PHASE   ; study phase indicator
#> STUDY   ; study number
#> AMT     ; dose amount
#> DV      ; dependent variable

Long, with decodes

nm_input(spec, .long = TRUE, .decodes = TRUE)
#> $INPUT
#> ID      ; subject identifier
#> NUM     ; record number
#> EVID    ; event ID 
#>         ; [0 = observation, 1 = dose]
#> RF=DROP ; renal function stage
#> ALT     ; alanine aminotransferase
#> BMI     ; BMI
#> PHASE   ; study phase indicator 
#>         ; [values: 1]
#> STUDY   ; study number 
#>         ; [1 = SAD, 2 = MAD, 3 = Renal, 4 = Hepatic]
#> AMT     ; dose amount
#> DV      ; dependent variable

Created on 2024-05-11 with reprex v2.0.2

Summary

This is a breaking change.

kylebaron commented 1 month ago

Thanks @kyleam. I'm going to stick with the breaking change on this one just because I like the name and $INPUT almost always looks like the new default. With larger, more complicated data sets, the long output is unwieldy.