# Customize Columns in an AE Summary Table

    library(metalite.ae)

## Overview

The `display` argument of `format_ae_summary()` selects and orders the statistics in an AE summary table. This vignette demonstrates how to include risk-difference estimates and inference results.

## Define metadata

The example uses ADSL and ADAE data from the forestly package.

The metadata follows the same approach used in the AE Summary in RTF format vignette.

    adsl <- forestly::forestly_adsl
    adae <- forestly::forestly_adae

    adsl$TRT01A <- factor(
      adsl$TRT01A,
      levels = c("Xanomeline Low Dose", "Placebo"),
      labels = c("Low Dose", "Placebo")
    )
    adae$TRTA <- factor(
      adae$TRTA,
      levels = c("Xanomeline Low Dose", "Placebo"),
      labels = c("Low Dose", "Placebo")
    )

    analysis_plan <- metalite::plan(
      analysis = "ae_summary",
      population = "apat",
      observation = "wk12",
      parameter = "any;rel;ser"
    )

    meta <- metalite::meta_adam(observation = adae, population = adsl) |>
      metalite::define_plan(analysis_plan) |>
      metalite::define_population(
        name = "apat",
        var = c("USUBJID", "SAFFL", "TRT01A"),
        group = "TRT01A",
        subset = SAFFL == "Y",
        label = "All Participants as Treated"
      ) |>
      metalite::define_observation(
        name = "wk12",
        var = c(
          "USUBJID", "SAFFL", "TRTA", "AEDECOD", "AEBODSYS", "AEREL",
          "AESER"
        ),
        group = "TRTA",
        subset = SAFFL == "Y",
        label = "Weeks 0 to 12"
      ) |>
      metalite::define_parameter(
        name = "any",
        term1 = "",
        term2 = "",
        var = "AEDECOD",
        soc = "AEBODSYS",
        label = "All AEs"
      ) |>
      metalite::define_parameter(
        name = "rel",
        term1 = "Drug-Related",
        term2 = "",
        subset = AEREL %in% c("POSSIBLE", "PROBABLE"),
        var = "AEDECOD",
        soc = "AEBODSYS",
        label = "Drug-related AEs"
      ) |>
      metalite::define_parameter(
        name = "ser",
        term1 = "Serious",
        term2 = "",
        subset = AESER == "Y",
        var = "AEDECOD",
        soc = "AEBODSYS",
        label = "Serious AEs"
      ) |>
      metalite::define_analysis(
        name = "ae_summary",
        title = "Adverse Event Summary"
      ) |>
      metalite::meta_build()

## Select columns

Use `extend_ae_specific_inference()` to add confidence intervals and p-values based on the Miettinen and Nurminen (M&N) method. For details, see the rate compare vignette.

After extending the analysis, use `display` in `format_ae_summary()` to select statistics and set their order. Available options are:

- `"n"`: number of participants with an adverse event.
- `"prop"`: proportion of participants with an adverse event.
- `"total"`: total columns.
- `"diff"`: risk difference.
- `"diff_ci"`: 95% confidence interval for the risk difference using the Miettinen and Nurminen method.
- `"diff_p"`: p-value for the risk difference using the Miettinen and Nurminen method.
- `"dur"`: average adverse event duration.
- `"events_avg"`: average number of adverse events per participant.
- `"events_count"`: number of adverse events per participant.

The `"diff_ci"` and `"diff_p"` statistics are added by `extend_ae_specific_inference()`, `"dur"` is added by `extend_ae_specific_duration()`, and the event statistics are added by `extend_ae_specific_events()`.

For example, include `"diff"` in addition to the number and proportion of participants with an adverse event:

    rtf_dir <- if (dir.exists("vignettes/rtf")) "vignettes/rtf" else "rtf"
    rtf_file <- file.path(rtf_dir, "ae0summary2.rtf")

    prepare_ae_summary(
      meta,
      population = "apat",
      observation = "wk12",
      parameter = "any;rel;ser"
    ) |>
      extend_ae_specific_inference() |>
      format_ae_summary(display = c("n", "prop", "diff", "diff_ci")) |>
      tlf_ae_summary(
        source = "Source:  [CDISCpilot: adam-adsl; adae]",
        analysis = "ae_summary", # Provide analysis type defined in meta$analysis
        col_rel_width = c(3, rep(1, 6)),
        path_outtable = rtf_file
      )
    #> any
    #> rel
    #> ser
    #> The output is saved in/private/var/folders/yy/6bb11gtn52z0qwdg1_6kdbg00000gn/T/RtmpBCvLa1/Rbuild12c86435ade20/metalite.ae/vignettes/rtf/ae0summary2.rtf

Generated RTF file: ae0summary2.rtf