Skip to contents

AE Mocks

Reusable tfrmt base layer:

ae_mock_table <- function(tfrmt_obj){
  tfrmt(
    title = "Table Name",
    subtitle = "Study ID: GSK12345",
    body_plan = body_plan(
    frmt_structure(group_val = ".default", label_val = ".default",
                   frmt_combine(
                     "{count} {percent}",
                     count = frmt("XXX"),
                     percent = frmt_when("==100"~ frmt(""),
                                         "==0"~ "",
                                         "TRUE" ~ frmt("(XX.X%)")))),
    frmt_structure(group_val = ".default", label_val = ".default",
                   frmt_combine(
                     "{num} ({lower}, {upper})",
                     num = frmt("XX.X"),
                     lower = frmt_when("==100"~ frmt(""),
                                       "==0"~ "",
                                       "TRUE" ~ frmt("XX.X%")),
                     upper = frmt_when("==100"~ frmt(""),
                                       "==0"~ "",
                                       "TRUE" ~ frmt("XX.X%"))))
    ),
  col_plan = col_plan(
    T1, T2, `T1&T2`, PL,
    everything(),
    -starts_with("ord")
    )
  )
}

Example 1: mock table with no groups

df <- bind_rows(
  crossing(label = c("label 1", "label 2", "label 3"),
           column = c("T1", "T2", "T1&T2", "PL"),
           param = c("count", "percent")) %>%
    mutate(ord1 = rep(seq(1:length(unique(.$label))), each = nrow(.)/length(unique(.$label)) )),
  crossing(label = c("label 1", "label 2", "label 3"),
           column = c("risk T1-PL", "risk T2-PL", "risk T1&T2-PL"),
           param = c("num", "lower", "upper")) %>%
    mutate(ord1 = rep(seq(1:length(unique(.$label))), each = nrow(.)/length(unique(.$label)) ))
  ) %>% arrange_all()

ae_mock_table() %>%
  tfrmt(
    label = "label",
    param = "param",
    column = "column",
    value = value,
    sorting_cols = vars(ord1)
    ) %>%
  print_mock_gt(df)
Table Name
Study ID: GSK12345
T1 T2 T1&T2 PL risk T1&T2-PL risk T1-PL risk T2-PL
label 1 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
label 2 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
label 3 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)

Example 2: mock table with one level of grouping, indented labels

df <- bind_rows(
  crossing(group = c("grp1", "grp2"),
           label = c("label 1", "label 2", "label 3"),
           column = c("T1", "T2", "T1&T2", "PL"),
           param = c("count", "percent")),
  crossing(group = c("grp1", "grp2"),
           label = c("label 1", "label 2", "label 3"),
           column = c("risk T1-PL", "risk T2-PL", "risk T1&T2-PL"),
           param = c("num", "lower", "upper"))
  ) %>% arrange_all()

ae_mock_table() %>%
  tfrmt(
    group = group,
    label = "label",
    param = "param",
    column = "column",
    value = value,
    row_grp_plan = row_grp_plan( row_grp_structure(group_val = ".default", element_block(post_space = "   ")) ),
    
    col_plan = col_plan(
      T1, T2, `T1&T2`, PL, `risk T1-PL`, `risk T2-PL`, `risk T1&T2-PL`,
      everything(),
      -starts_with("ord"))
    ) %>%
  print_mock_gt(df)
Table Name
Study ID: GSK12345
T1 T2 T1&T2 PL risk T1-PL risk T2-PL risk T1&T2-PL
grp1






label 1 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
label 2 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
label 3 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
             
grp2






label 1 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
label 2 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
label 3 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
             

Example 3: mock table with two levels of grouping, indented labels

df <- bind_rows(
  crossing(grp1 = c("group 1.1", "group 1.2"),
           grp2 = c("group 2.1", "group 2.2"),
           label = c("label 1", "label 2"),
           column = c("T1", "T2", "T1&T2", "PL"),
           param = c("count", "percent")),
  crossing(grp1 = c("group 1.1", "group 1.2"),
           grp2 = c("group 2.1", "group 2.2"),
           label = c("label 1", "label 2"),
           column = c("risk T1-PL", "risk T2-PL", "risk T1&T2-PL"),
           param = c("num", "lower", "upper"))
  ) %>% arrange_all()

ae_mock_table() %>%
  tfrmt(
    group = c(grp1, grp2),
    label = "label",
    param = "param",
    column = "column",
    value = value,
    row_grp_plan = row_grp_plan( row_grp_structure(group_val = ".default", element_block(post_space = "   ")) ),
    
    col_plan = col_plan(
      T1, T2, `T1&T2`, PL, `risk T1-PL`, `risk T2-PL`, `risk T1&T2-PL`,
      everything(),
      -starts_with("ord"))
    ) %>%
  print_mock_gt(df)
Table Name
Study ID: GSK12345
T1 T2 T1&T2 PL risk T1-PL risk T2-PL risk T1&T2-PL
group 1.1






group 2.1






label 1 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
label 2 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
             
group 2.2






label 1 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
label 2 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
             
group 1.2






group 2.1






label 1 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
label 2 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
             
group 2.2






label 1 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
label 2 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
             

Example 4: mock table with two levels of grouping, column separated labels

ae_mock_table() %>%
  tfrmt(
    group = c(grp1, grp2),
    label = "label",
    param = "param",
    column = "column",
    value = value,
    row_grp_plan = row_grp_plan(label_loc = element_row_grp_loc(location = "column")),    
    
    col_plan = col_plan(
      T1, T2, `T1&T2`, PL, `risk T1-PL`, `risk T2-PL`, `risk T1&T2-PL`,
      everything(),
      -starts_with("ord"))
    ) %>%
  print_mock_gt(df)
Table Name
Study ID: GSK12345
T1 T2 T1&T2 PL risk T1-PL risk T2-PL risk T1&T2-PL
group 1.1 group 2.1






label 1 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
label 2 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
group 2.2






label 1 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
label 2 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
group 1.2 group 2.1






label 1 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
label 2 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
group 2.2






label 1 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)
label 2 XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XXX (XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%) XX.X (XX.X%, XX.X%)

Example 5: mock table with combined columns, using data_ae

fmt_spec <- tfrmt(
  group = AEBODSYS,
  label = AETERM,
  param = param,
  column = c(col2, col1),
  value = value,
  row_grp_plan = row_grp_plan(),
  body_plan = body_plan(
    frmt_structure(group_val = ".default", label_val = ".default",
            frmt_combine("{n} {pct}",
                        n = frmt("XXX"),
                        pct = frmt_when(
                          "==100" ~ "",
                          "==0" ~ "",
                          TRUE ~ frmt("(xx.x %)")))),
    frmt_structure(group_val = ".default", label_val = ".default", 
                   AEs = frmt("[XXX]")),
    frmt_structure(group_val = ".default", label_val = ".default", 
                   pval = frmt_when(">0.99" ~ ">0.99",
                                    "<0.001" ~ "<0.001",
                                    "<0.05" ~ frmt("x.xxx*"),
                                    TRUE ~ frmt("x.xxx", missing = "--")))
  ), col_plan = col_plan(-starts_with("ord")))

#
data_ae2 <- data_ae %>% 
  group_by(AEBODSYS, AETERM) %>% 
  mutate(pct_high = value[col2=="Xanomeline High Dose" & param=="pct"]) %>% 
  ungroup %>% 
  filter(pct_high >10) %>% 
  select(-pct_high)

data_ae2 %>%  
  select(-value) %>% 
  arrange(ord1, ord2 ) %>% 
  print_mock_gt(fmt_spec, . )
Placebo Xanomeline Low Dose Xanomeline High Dose fisher_pval
n_pct AEs n_pct AEs n_pct AEs p_low p_high
ANY BODY SYSTEM XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] x.xxx x.xxx
CARDIAC DISORDERS XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] x.xxx x.xxx
GASTROINTESTINAL DISORDERS XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] x.xxx x.xxx
GENERAL DISORDERS AND ADMINISTRATION SITE CONDITIONS XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] x.xxx x.xxx
APPLICATION SITE PRURITUS XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] x.xxx x.xxx
APPLICATION SITE ERYTHEMA XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] x.xxx x.xxx
APPLICATION SITE IRRITATION XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] x.xxx x.xxx
INFECTIONS AND INFESTATIONS XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] x.xxx x.xxx
NERVOUS SYSTEM DISORDERS XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] x.xxx x.xxx
DIZZINESS XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] x.xxx x.xxx
RESPIRATORY, THORACIC AND MEDIASTINAL DISORDERS XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] x.xxx x.xxx
SKIN AND SUBCUTANEOUS TISSUE DISORDERS XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] x.xxx x.xxx
PRURITUS XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] x.xxx x.xxx
ERYTHEMA XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] x.xxx x.xxx
RASH XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] XXX (xx.x %) [XXX] x.xxx x.xxx

Demography Mocks

tfrmt(
  # specify columns in the data
  group = c(rowlbl1,grp),
  label = rowlbl2,
  column = column, 
  param = param,
  value = value,
  sorting_cols = c(ord1, ord2),
  
  # Specify body plan
  body_plan = body_plan(
    frmt_structure(group_val = ".default", label_val = ".default", frmt_combine("{n} {pct}", 
                                                                                n = frmt("xxx"),
                                                                                pct = frmt_when("==100" ~ "",
                                                                                                "==0" ~ "",
                                                                                                TRUE ~ frmt("(xx.x %)")))),
    frmt_structure(group_val = ".default", label_val = "n", frmt("xxx")),
    frmt_structure(group_val = ".default", label_val = c("Mean", "Median", "Min","Max"), frmt("xxx.x")),
    frmt_structure(group_val = ".default", label_val = "SD", frmt("xxx.xx")),
    frmt_structure(group_val = ".default", label_val = ".default", p = frmt("")),
    frmt_structure(group_val = ".default", label_val = c("n","<65 yrs","<12 months","<25"), p = frmt_when(">0.99" ~ ">0.99",
                                                                                 "<0.001" ~ "<0.001",
                                                                                 TRUE ~ frmt("x.xxx", missing = "")))
  ),
  
  # Specify row group plan
  row_grp_plan = row_grp_plan(
    row_grp_structure(group_val = ".default", element_block(post_space = " ")),
    label_loc = element_row_grp_loc(location = "column")
  ),
  
  # Specify column styling plan
  col_style_plan = col_style_plan(
    col_style_structure(align = c(".",","," "), col = vars(everything()))
  ),
  
  # remove extra cols
  col_plan = col_plan(-grp, 
                      -starts_with("ord") )
) %>% 
  print_mock_gt(data_demog %>% select(-value))
Placebo Xanomeline Low Dose Xanomeline High Dose Total p-value
Age (y) n xxx          xxx          xxx          xxx          x.xxx
Mean xxx.x        xxx.x        xxx.x        xxx.x             
SD xxx.xx       xxx.xx       xxx.xx       xxx.xx            
Median xxx.x        xxx.x        xxx.x        xxx.x             
Min xxx.x        xxx.x        xxx.x        xxx.x             
Max xxx.x        xxx.x        xxx.x        xxx.x             
                                                         
<65 yrs xxx (xx.x %) xxx (xx.x %) xxx (xx.x %) xxx (xx.x %) x.xxx
65-80 yrs xxx (xx.x %) xxx (xx.x %) xxx (xx.x %) xxx (xx.x %)      
>80 yrs xxx (xx.x %) xxx (xx.x %) xxx (xx.x %) xxx (xx.x %)      
                                                         
Sex n xxx          xxx          xxx          xxx          x.xxx
Male xxx (xx.x %) xxx (xx.x %) xxx (xx.x %) xxx (xx.x %)      
Female xxx (xx.x %) xxx (xx.x %) xxx (xx.x %) xxx (xx.x %)      
                                                         
Race (Origin) n xxx          xxx          xxx          xxx          x.xxx
Caucasian xxx (xx.x %) xxx (xx.x %) xxx (xx.x %) xxx (xx.x %)      
African Descent xxx (xx.x %) xxx (xx.x %) xxx (xx.x %) xxx (xx.x %)      
Hispanic xxx (xx.x %) xxx (xx.x %) xxx (xx.x %) xxx (xx.x %)      
Other xxx (xx.x %) xxx (xx.x %) xxx (xx.x %) xxx (xx.x %)      
                                                         
MMSE n xxx          xxx          xxx          xxx          x.xxx
Mean xxx.x        xxx.x        xxx.x        xxx.x             
SD xxx.xx       xxx.xx       xxx.xx       xxx.xx            
Median xxx.x        xxx.x        xxx.x        xxx.x             
Min xxx.x        xxx.x        xxx.x        xxx.x             
Max xxx.x        xxx.x        xxx.x        xxx.x             
                                                         
Duration of disease n xxx          xxx          xxx          xxx          x.xxx
Mean xxx.x        xxx.x        xxx.x        xxx.x             
SD xxx.xx       xxx.xx       xxx.xx       xxx.xx            
Median xxx.x        xxx.x        xxx.x        xxx.x             
Min xxx.x        xxx.x        xxx.x        xxx.x             
Max xxx.x        xxx.x        xxx.x        xxx.x             
                                                         
<12 months xxx (xx.x %) xxx (xx.x %) xxx (xx.x %) xxx (xx.x %) x.xxx
>=12 months xxx (xx.x %) xxx (xx.x %) xxx (xx.x %) xxx (xx.x %)      
                                                         
Years of education n xxx          xxx          xxx          xxx          x.xxx
Mean xxx.x        xxx.x        xxx.x        xxx.x             
SD xxx.xx       xxx.xx       xxx.xx       xxx.xx            
Median xxx.x        xxx.x        xxx.x        xxx.x             
Min xxx.x        xxx.x        xxx.x        xxx.x             
Max xxx.x        xxx.x        xxx.x        xxx.x             
                                                         
Baseline weight(kg) n xxx          xxx          xxx          xxx          x.xxx
Mean xxx.x        xxx.x        xxx.x        xxx.x             
SD xxx.xx       xxx.xx       xxx.xx       xxx.xx            
Median xxx.x        xxx.x        xxx.x        xxx.x             
Min xxx.x        xxx.x        xxx.x        xxx.x             
Max xxx.x        xxx.x        xxx.x        xxx.x             
                                                         
Baseline height(cm) n xxx          xxx          xxx          xxx          x.xxx
Mean xxx.x        xxx.x        xxx.x        xxx.x             
SD xxx.xx       xxx.xx       xxx.xx       xxx.xx            
Median xxx.x        xxx.x        xxx.x        xxx.x             
Min xxx.x        xxx.x        xxx.x        xxx.x             
Max xxx.x        xxx.x        xxx.x        xxx.x             
                                                         
Baseline BMI n xxx          xxx          xxx          xxx          x.xxx
Mean xxx.x        xxx.x        xxx.x        xxx.x             
SD xxx.xx       xxx.xx       xxx.xx       xxx.xx            
Median xxx.x        xxx.x        xxx.x        xxx.x             
Min xxx.x        xxx.x        xxx.x        xxx.x             
Max xxx.x        xxx.x        xxx.x        xxx.x             
                                                         
<25 xxx (xx.x %) xxx (xx.x %) xxx (xx.x %) xxx (xx.x %) x.xxx
25-<30 xxx (xx.x %) xxx (xx.x %) xxx (xx.x %) xxx (xx.x %)      
>=30 xxx (xx.x %) xxx (xx.x %) xxx (xx.x %) xxx (xx.x %)      
                                                         

Efficacy Mocks

tfrmt(
  group = group,
  label = label,
  column = column,
  param = param,
  value = value,
  sorting_cols = c(ord1, ord2),
  row_grp_plan = row_grp_plan(
    row_grp_structure(group_val = list(group="Change from Baseline"), element_block(post_space = " ")),
    row_grp_structure(group_val = list(group="p-value (Dose Response)"), element_block(post_space = " ")),
    row_grp_structure(group_val = list(group="p-value (Xan - Placebo)"), element_block(post_space = " "))
  ),
  body_plan = body_plan(
    frmt_structure(group_val = ".default", label_val = "n", frmt("xx")), 
    frmt_structure(group_val = ".default", label_val = "Median (Range)", frmt_combine("{median} ({min};{max})",
                                                                                      median = frmt("xx.x"),
                                                                                      min = frmt("xx"),
                                                                                      max = frmt("xx"), missing = " ")),
    frmt_structure(group_val = ".default", label_val = "Mean (SD)", frmt_combine("{mean} ({sd})",
                                                                                      mean = frmt("xx.x"),
                                                                                      sd = frmt("xx.xx"), missing = " ")),
    frmt_structure(group_val = ".default", label_val = "Diff of LS Means (SE)", frmt_combine("{diff} ({diff_se})",
                                                                                 diff = frmt("xx.x"),
                                                                                 diff_se = frmt("xx.xx"), missing = " ")),
    frmt_structure(group_val = ".default", label_val = "95% CI", frmt_combine("({diff_lcl};{diff_ucl})",
                                                                              diff_lcl = frmt("xx.x"),
                                                                              diff_ucl = frmt("xx.x"), missing = " ")),
    frmt_structure(group_val = ".default", label_val = ".default", p.value = frmt_when("<0.001" ~ "<0.001",
                                                                                       ">0.99" ~ ">0.99",
                                                                                       TRUE ~ frmt("x.xxx", missing = " ")))
  ),
  col_plan = col_plan(
    group, label,
    contains("Placebo"),
    contains("Low"),
    contains("High")
  )
) %>%
  print_mock_gt(data_efficacy %>% select(-value))
Placebo Xanomeline Low Dose Xanomeline High Dose ord1 ord2
Baseline




n xx xx xx 1 1
Mean (SD) xx.x (xx.xx) xx.x (xx.xx) xx.x (xx.xx) 1 2
Median (Range) xx.x (xx;xx) xx.x (xx;xx) xx.x (xx;xx) 1 3
Week 24




n xx xx xx 2 1
Mean (SD) xx.x (xx.xx) xx.x (xx.xx) xx.x (xx.xx) 2 2
Median (Range) xx.x (xx;xx) xx.x (xx;xx) xx.x (xx;xx) 2 3
Change from Baseline




n xx xx xx 3 1
Mean (SD) xx.x (xx.xx) xx.x (xx.xx) xx.x (xx.xx) 3 2
Median (Range) xx.x (xx;xx) xx.x (xx;xx) xx.x (xx;xx) 3 3
      3 3
p-value (Dose Response) x.xxx 4 4
      4 4
p-value (Xan - Placebo) x.xxx x.xxx 5 4
Diff of LS Means (SE) xx.x (xx.xx) xx.x (xx.xx) 5 5
95% CI (xx.x;xx.x) (xx.x;xx.x) 5 6
      5 6
p-value (Xan High - Xan Low) x.xxx 6 4
Diff of LS Means (SE) xx.x (xx.xx) 6 5
95% CI (xx.x;xx.x) 6 6