cardinal
  • Home
  • Template Catalog
  • About
  • Resources
  • Help
    • Getting Started
    • Report a Bug
    • FAQ

FDA Table 32

Percentage of Patients With Maximum Diastolic Blood Pressure by Category of Blood Pressure Postbaseline, Safety Population, Pooled Analysis

table
FDA
safety
vital signs
  • Table Preview
  • Setup
  • Build ARD
  • Build Table

Code
# Load libraries & data -------------------------------------
library(dplyr)
library(cards)
library(gtsummary)

adsl <- random.cdisc.data::cadsl
advs <- random.cdisc.data::cadvs

# Pre-processing --------------------------------------------
adsl <- adsl |>
  filter(SAFFL == "Y") # safety population

data <- advs |>
  filter(
    # safety population
    SAFFL == "Y",
    # diastolic blood pressure
    PARAMCD == "DIABP",
    # post-baseline visits
    AVISITN >= 1
  ) |>
  # analyze maximum values of each subject
  slice_max(AVAL, n = 1L, by = USUBJID) |>
  # define analysis value cutoffs
  mutate(
    L60 = AVAL < 60, # DIABP <60
    G60 = AVAL > 60, # DIABP >60
    G90 = AVAL > 90, # DIABP >90
    G110 = AVAL > 110, # DIABP >110
    GE120 = AVAL >= 120 # DIABP >=120
  )
Code
ard <- bind_ard(
  ard_dichotomous(
    data,
    variables = c(L60, G60, G90, G110, GE120),
    by = TRT01A,
    statistic = ~ c("n", "p"),
    denominator = adsl
  ),
  # ARD for header N values
  ard_categorical(adsl, variables = TRT01A)
)

ard
{cards} data frame: 39 x 11
   group1 group1_level variable variable_level   context stat_name stat_label  stat fmt_fn warning error
1  TRT01A    A: Drug X      L60           TRUE dichotom…         n          n     0      0              
2  TRT01A    A: Drug X      L60           TRUE dichotom…         p          %     0   <fn>              
3  TRT01A    A: Drug X      G60           TRUE dichotom…         n          n   134      0              
4  TRT01A    A: Drug X      G60           TRUE dichotom…         p          %     1   <fn>              
5  TRT01A    A: Drug X      G90           TRUE dichotom…         n          n   134      0              
6  TRT01A    A: Drug X      G90           TRUE dichotom…         p          %     1   <fn>              
7  TRT01A    A: Drug X     G110           TRUE dichotom…         n          n   123      0              
8  TRT01A    A: Drug X     G110           TRUE dichotom…         p          % 0.918   <fn>              
9  TRT01A    A: Drug X    GE120           TRUE dichotom…         n          n    88      0              
10 TRT01A    A: Drug X    GE120           TRUE dichotom…         p          % 0.657   <fn>              
11 TRT01A    B: Place…      L60           TRUE dichotom…         n          n     0      0              
12 TRT01A    B: Place…      L60           TRUE dichotom…         p          %     0   <fn>              
13 TRT01A    B: Place…      G60           TRUE dichotom…         n          n   134      0              
14 TRT01A    B: Place…      G60           TRUE dichotom…         p          %     1   <fn>              
15 TRT01A    B: Place…      G90           TRUE dichotom…         n          n   134      0              
16 TRT01A    B: Place…      G90           TRUE dichotom…         p          %     1   <fn>              
17 TRT01A    B: Place…     G110           TRUE dichotom…         n          n   111      0              
18 TRT01A    B: Place…     G110           TRUE dichotom…         p          % 0.828   <fn>              
19 TRT01A    B: Place…    GE120           TRUE dichotom…         n          n    70      0              
20 TRT01A    B: Place…    GE120           TRUE dichotom…         p          % 0.522   <fn>              
21 TRT01A    C: Combi…      L60           TRUE dichotom…         n          n     0      0              
22 TRT01A    C: Combi…      L60           TRUE dichotom…         p          %     0   <fn>              
23 TRT01A    C: Combi…      G60           TRUE dichotom…         n          n   132      0              
24 TRT01A    C: Combi…      G60           TRUE dichotom…         p          %     1   <fn>              
25 TRT01A    C: Combi…      G90           TRUE dichotom…         n          n   131      0              
26 TRT01A    C: Combi…      G90           TRUE dichotom…         p          % 0.992   <fn>              
27 TRT01A    C: Combi…     G110           TRUE dichotom…         n          n   107      0              
28 TRT01A    C: Combi…     G110           TRUE dichotom…         p          % 0.811   <fn>              
29 TRT01A    C: Combi…    GE120           TRUE dichotom…         n          n    76      0              
30 TRT01A    C: Combi…    GE120           TRUE dichotom…         p          % 0.576   <fn>              
31   <NA>                TRT01A      A: Drug X categori…         n          n   134      0              
32   <NA>                TRT01A      A: Drug X categori…         N          N   400      0              
33   <NA>                TRT01A      A: Drug X categori…         p          % 0.335   <fn>              
34   <NA>                TRT01A      B: Place… categori…         n          n   134      0              
35   <NA>                TRT01A      B: Place… categori…         N          N   400      0              
36   <NA>                TRT01A      B: Place… categori…         p          % 0.335   <fn>              
37   <NA>                TRT01A      C: Combi… categori…         n          n   132      0              
38   <NA>                TRT01A      C: Combi… categori…         N          N   400      0              
39   <NA>                TRT01A      C: Combi… categori…         p          %  0.33   <fn>              
Code
tbl <- tbl_ard_summary(
  ard,
  by = TRT01A,
  # Add labels for each range
  label = list(
    L60 = "<60",
    G60 = ">60",
    G90 = ">90",
    G110 = ">110",
    GE120 = ">=120"
  )
) |>
  modify_header(
    # Update label, add analysis value units
    label ~ paste0("**Diastolic Blood Pressure  \n(", data$AVALU[1], ")**"),
    # Add N values to `by` variable labels
    all_stat_cols() ~ "**{level}**  \nN = {n}"
  )

tbl

Source Code
---
title: FDA Table 32
subtitle: Percentage of Patients With Maximum Diastolic Blood Pressure by Category of Blood Pressure Postbaseline, Safety Population, Pooled Analysis
categories: [table, FDA, safety, vital signs]
---

::: panel-tabset
## Table Preview

```{r img, echo=FALSE, fig.align='center', out.width='45%'}
knitr::include_graphics("result.png")
```

## Setup

```{r setup, message=FALSE}
# Load libraries & data -------------------------------------
library(dplyr)
library(cards)
library(gtsummary)

adsl <- random.cdisc.data::cadsl
advs <- random.cdisc.data::cadvs

# Pre-processing --------------------------------------------
adsl <- adsl |>
  filter(SAFFL == "Y") # safety population

data <- advs |>
  filter(
    # safety population
    SAFFL == "Y",
    # diastolic blood pressure
    PARAMCD == "DIABP",
    # post-baseline visits
    AVISITN >= 1
  ) |>
  # analyze maximum values of each subject
  slice_max(AVAL, n = 1L, by = USUBJID) |>
  # define analysis value cutoffs
  mutate(
    L60 = AVAL < 60, # DIABP <60
    G60 = AVAL > 60, # DIABP >60
    G90 = AVAL > 90, # DIABP >90
    G110 = AVAL > 110, # DIABP >110
    GE120 = AVAL >= 120 # DIABP >=120
  )
```

## Build ARD

```{r ard, message=FALSE, warning=FALSE, results='hide'}
ard <- bind_ard(
  ard_dichotomous(
    data,
    variables = c(L60, G60, G90, G110, GE120),
    by = TRT01A,
    statistic = ~ c("n", "p"),
    denominator = adsl
  ),
  # ARD for header N values
  ard_categorical(adsl, variables = TRT01A)
)

ard
```

```{r, echo=FALSE}
# Print ARD
withr::local_options(width = 9999)
print(ard, columns = "all", n = 40)
```

## Build Table

```{r tbl, results = 'hide'}
tbl <- tbl_ard_summary(
  ard,
  by = TRT01A,
  # Add labels for each range
  label = list(
    L60 = "<60",
    G60 = ">60",
    G90 = ">90",
    G110 = ">110",
    GE120 = ">=120"
  )
) |>
  modify_header(
    # Update label, add analysis value units
    label ~ paste0("**Diastolic Blood Pressure  \n(", data$AVALU[1], ")**"),
    # Add N values to `by` variable labels
    all_stat_cols() ~ "**{level}**  \nN = {n}"
  )

tbl
```

```{r eval=FALSE, include=FALSE}
gt::gtsave(as_gt(tbl), filename = "result.png")
```

```{r img, echo=FALSE, fig.align='center', out.width='45%'}
```
:::
 
  • This website as well as code examples are licensed under the Apache License, Version 2.0.
Cookie Preferences