Skip to content

Ordering summarised_results object #50

Description

@mvankessel-EMC

This is a (slightly altered) snippet of code that I sent to @ariannaa7 on how to order a summarized result:

# Example from CohortCharactersitcs -------------------------------------------
library(omock)
library(dplyr, warn.conflicts = FALSE)
library(DrugUtilisation)
library(CohortCharacteristics)

cdm <- mockCdmFromDataset(datasetName = "GiBleed", source = "duckdb")

cdm <- generateIngredientCohortSet(cdm = cdm, name = "my_cohort", ingredient = c("warfarin", "acetaminophen"))

result <- cdm$my_cohort |>
  PatientProfiles::addSex() |>
  summariseCharacteristics(strata = "sex")

# Code to re-order  -----------------------------------------------------------
# Copy result and rename CDM to have 2 CDM's
resultMultiDb <- result |>
  omopgenerics::bind(
    result |>
      dplyr::mutate(cdm_name = "my cdm")
  )

# CDM name order: GiBleed, my cdm
# Sex strata order: overall, Female, Male
CohortCharacteristics::tableCharacteristics(resultMultiDb)

# Reordering strata to be reversed: Male, Female, Overall
resultReordered <- resultMultiDb |>
  # Add `cdm_order` column, set values will be either 1, 2, or 3
  dplyr::mutate(
    cdm_order = dplyr::case_when(
      .data$cdm_name == "my cdm" ~ 1,
      .data$cdm_name == "GiBleed" ~ 2,
      # Anything that is not specified above
      .default = 3
    )
  ) |>
  dplyr::mutate(
  # Add `sex_order` column, set values will be either 1, 2, or 3
    sex_order = dplyr::case_when(
      # `strata_name == <type>` is the strata type, usually age, sex w/e
      # `strata_level == <group>` are the individual groups within the strata
      .data$strata_name == "sex" & .data$strata_level == "Male" ~ 1,
      .data$strata_name == "sex" & .data$strata_level == "Female" ~ 2,
      .data$strata_name == "sex" & .data$strata_level == "overall" ~ 3,
      .default = 4
    )
  ) |>
  # Re-order by `cdm_order` and `sex_order` columns
  dplyr::arrange(.data$cdm_order, .data$sex_order) |>
  # Remove the `cdm_order` and `sex_order` column
  dplyr::select(-"cdm_order", -"sex_order")

# CDM order: my cdm, GiBleed
# Strata order: Male, Female, overall
CohortCharacteristics::tableCharacteristics(resultReordered)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions