15  Count

Objective

Add examples to illustrate helper functions to count subject / records”

import polars as pl
from csrlite import count_subject, count_subject_with_observation
adsl = pl.read_parquet("data/adsl.parquet")
adae = pl.read_parquet("data/adae.parquet")

16 Population

df = count_subject(
    population = adsl, 
    id = "USUBJID", 
    group = "TRT01A",
)
df
shape: (4, 2)
TRT01A n_subj_pop
enum u32
"Placebo" 86
"Xanomeline High Dose" 84
"Xanomeline Low Dose" 84
"Total" 254
(
    df.
    with_columns(pl.lit("Subjects in Population").alias("label")).
    pivot(index = "label", on = "TRT01A", values = "n_subj_pop")
)
shape: (1, 5)
label Placebo Xanomeline High Dose Xanomeline Low Dose Total
str u32 u32 u32 u32
"Subjects in Population" 86 84 84 254

17 Observation

df = count_subject_with_observation(
    population = adsl, 
    observation = adae,
    id = "USUBJID", 
    group = "TRT01A",
    variable = "AESOC"
)
df
shape: (92, 11)
__id__ TRT01A AESOC n_obs n_subj n_subj_pop pct_subj pct_subj_fmt n_subj_fmt n_pct_subj_fmt __variable__
u32 enum str u32 u32 u32 f64 str str str str
1 "Placebo" "CARDIAC DISORDERS" 27 13 86 15.116279 " 15.1" " 13" " 13 ( 15.1)" "CARDIAC DISORDERS"
2 "Placebo" "CONGENITAL, FAMILIAL AND GENET… 0 0 86 0.0 "  0.0" "  0" "  0 (  0.0)" "CONGENITAL, FAMILIAL AND GENET…
3 "Placebo" "EAR AND LABYRINTH DISORDERS" 2 1 86 1.162791 "  1.2" "  1" "  1 (  1.2)" "EAR AND LABYRINTH DISORDERS"
4 "Placebo" "EYE DISORDERS" 8 4 86 4.651163 "  4.7" "  4" "  4 (  4.7)" "EYE DISORDERS"
5 "Placebo" "GASTROINTESTINAL DISORDERS" 26 17 86 19.767442 " 19.8" " 17" " 17 ( 19.8)" "GASTROINTESTINAL DISORDERS"
88 "Total" "RESPIRATORY, THORACIC AND MEDI… 53 30 254 11.811024 " 11.8" " 30" " 30 ( 11.8)" "RESPIRATORY, THORACIC AND MEDI…
89 "Total" "SKIN AND SUBCUTANEOUS TISSUE D… 276 105 254 41.338583 " 41.3" "105" "105 ( 41.3)" "SKIN AND SUBCUTANEOUS TISSUE D…
90 "Total" "SOCIAL CIRCUMSTANCES" 1 1 254 0.393701 "  0.4" "  1" "  1 (  0.4)" "SOCIAL CIRCUMSTANCES"
91 "Total" "SURGICAL AND MEDICAL PROCEDURE… 5 5 254 1.968504 "  2.0" "  5" "  5 (  2.0)" "SURGICAL AND MEDICAL PROCEDURE…
92 "Total" "VASCULAR DISORDERS" 13 8 254 3.149606 "  3.1" "  8" "  8 (  3.1)" "VASCULAR DISORDERS"
(
    df
    .pivot(index = "AESOC", on = "TRT01A", values = "n_pct_subj_fmt")
    .sort("AESOC")
)
shape: (23, 5)
AESOC Placebo Xanomeline High Dose Xanomeline Low Dose Total
str str str str str
"CARDIAC DISORDERS" " 13 ( 15.1)" " 18 ( 21.4)" " 13 ( 15.5)" " 44 ( 17.3)"
"CONGENITAL, FAMILIAL AND GENET… "  0 (  0.0)" "  2 (  2.4)" "  1 (  1.2)" "  3 (  1.2)"
"EAR AND LABYRINTH DISORDERS" "  1 (  1.2)" "  1 (  1.2)" "  2 (  2.4)" "  4 (  1.6)"
"EYE DISORDERS" "  4 (  4.7)" "  1 (  1.2)" "  2 (  2.4)" "  7 (  2.8)"
"GASTROINTESTINAL DISORDERS" " 17 ( 19.8)" " 21 ( 25.0)" " 15 ( 17.9)" " 53 ( 20.9)"
"RESPIRATORY, THORACIC AND MEDI… " 10 ( 11.6)" " 10 ( 11.9)" " 10 ( 11.9)" " 30 ( 11.8)"
"SKIN AND SUBCUTANEOUS TISSUE D… " 21 ( 24.4)" " 42 ( 50.0)" " 42 ( 50.0)" "105 ( 41.3)"
"SOCIAL CIRCUMSTANCES" "  0 (  0.0)" "  1 (  1.2)" "  0 (  0.0)" "  1 (  0.4)"
"SURGICAL AND MEDICAL PROCEDURE… "  2 (  2.3)" "  2 (  2.4)" "  1 (  1.2)" "  5 (  2.0)"
"VASCULAR DISORDERS" "  3 (  3.5)" "  2 (  2.4)" "  3 (  3.6)" "  8 (  3.1)"