# Reporting the EQ-5D Descriptive System

#### Fraser Morton

#### 28 August 2026

## Overview

This vignette describes how EQ-5D descriptive system data can be summarised and reported using `eq5d`. It covers the outputs produced by `descriptive_data()` and `table_descriptive()` and explains how these can be used to report response distributions across EQ-5D dimensions.

## Descriptive data

The `descriptive_data()` function summarises EQ-5D responses in a tidy format, with one row for each dimension, response level and metric combination. This format is designed to work naturally with standard R workflows and is used by the reporting functions provided in the package.

    suppressPackageStartupMessages(library(eq5d))

    dat <- read.csv(
      system.file("extdata", "eq5d3l_example.csv", package = "eq5d")
    )

    # Ungrouped example.
    dat1 <- subset(dat, Group == "Group1")

    dd <- descriptive_data(dat1, version = "3L", metric = "percent")
    head(dd)
    #>   Dimension Level Value  Metric
    #> 1        MO     1    43 percent
    #> 2        MO     2    57 percent
    #> 3        MO     3     0 percent
    #> 4        SC     1    48 percent
    #> 5        SC     2    52 percent
    #> 6        SC     3     0 percent

## Counts and percentages

The `metric` argument controls whether descriptive summaries are reported as counts or percentages. For example, the following returns counts rather than percentages:

    descriptive_data(dat1, version = "3L", metric = "count")
    #>    Dimension Level Value Metric
    #> 1         MO     1    43  count
    #> 2         MO     2    57  count
    #> 3         MO     3     0  count
    #> 4         SC     1    48  count
    #> 5         SC     2    52  count
    #> 6         SC     3     0  count
    #> 7         UA     1    22  count
    #> 8         UA     2    71  count
    #> 9         UA     3     7  count
    #> 10        PD     1     6  count
    #> 11        PD     2    78  count
    #> 12        PD     3    16  count
    #> 13        AD     1    57  count
    #> 14        AD     2    43  count
    #> 15        AD     3     0  count

## Descriptive tables

Descriptive tables can be created using `table_descriptive()`. This function reshapes the output from `descriptive_data()` into a format commonly used for reporting EQ-5D results.

Tables may contain percentages or counts, depending on the metric used when creating the descriptive data.

    table_descriptive(dd, include_total = TRUE)
    #>   Level  MO  SC  UA  PD  AD
    #> 1     1  43  48  22   6  57
    #> 2     2  57  52  71  78  43
    #> 3     3   0   0   7  16   0
    #> 4 Total 100 100 100 100 100

In this table, rows represent EQ-5D response levels and columns represent dimensions. The values show the proportion of respondents reporting each level.

## Grouped tables

Response distributions are often compared across study groups, populations or time points.

When a grouping variable is supplied to `descriptive_data()`, summaries are calculated separately for each group. `table_descriptive()` then returns a list containing one table per group.

    dd_grp <- descriptive_data(dat, version = "3L", metric = "count", group = "Group")
    table_descriptive(dd_grp)
    #> $Group1
    #>   Level  MO  SC  UA  PD  AD
    #> 1     1  43  48  22   6  57
    #> 2     2  57  52  71  78  43
    #> 3     3   0   0   7  16   0
    #> 4 Total 100 100 100 100 100
    #>
    #> $Group2
    #>   Level  MO  SC  UA  PD  AD
    #> 1     1  62  72  57  28  74
    #> 2     2  38  28  40  66  19
    #> 3     3   0   0   3   6   7
    #> 4 Total 100 100 100 100 100

This approach makes it straightforward to compare descriptive system distributions across groups using a consistent reporting format throughout an analysis.