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.