The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Getting started with eq5dsuite

Introduction

The eq5dsuite package provides standardised tools for calculating EQ-5D preference-based values and analysing EQ-5D data following the recommendations of Devlin et al. (2020). This vignette introduces the core workflow: loading the package, exploring available value sets, and calculating EQ-5D values from profile data.

Installation

Install the released version from CRAN:

install.packages("eq5dsuite")

Install the development version from GitHub:

remotes::install_github("MathsInHealth/eq5dsuite-r")

Available value sets

The package includes country-specific value sets for the EQ-5D-3L, EQ-5D-5L, and EQ-5D-Y-3L instruments. Use eqvs_display() to see all available sets:

# List all available EQ-5D-3L value sets
eqvs_display(version = "3L")
#> Available national value sets for 3L version:
#>  Version          Name_short Country_code VS_code
#>       3L           Argentina           AR  AR_TTO
#>       3L     Argentina (VAS)           AR  AR_VAS
#>       3L           Australia           AU      AU
#>       3L       Belgium (VAS)           BE  BE_VAS
#>       3L             Bermuda           BM      BM
#>       3L              Brazil           BR      BR
#>       3L              Canada           CA      CA
#>       3L               Chile           CL      CL
#>       3L               China           CN      CN
#>       3L             Germany           DE  DE_TTO
#>       3L       Germany (VAS)           DE  DE_VAS
#>       3L             Denmark           DK      DK
#>       3L               Spain           ES      ES
#>       3L       Finland (VAS)           FI  FI_VAS
#>       3L              France           FR      FR
#>       3L             Hungary           HU      HU
#>       3L                Iran           IR      IR
#>       3L               Italy           IT      IT
#>       3L              Jordan           JO      JO
#>       3L               Japan           JP      JP
#>       3L               Korea           KR      KR
#>       3L           Sri Lanka           LK      LK
#>       3L      Malaysia (VAS)           MY  MY_VAS
#>       3L    Netherlands_2006           NL NL_2006
#>       3L   New Zealand (VAS)           NZ  NZ_VAS
#>       3L            Pakistan           PK      PK
#>       3L              Poland           PL      PL
#>       3L            Portugal           PT      PT
#>       3L              Sweden           SE      SE
#>       3L           Singapore           SG      SG
#>       3L            Slovenia           SI  SI_TTO
#>       3L      Slovenia (VAS)           SI  SI_VAS
#>       3L            Thailand           TH      TH
#>       3L             Tunisia           TN      TN
#>       3L Trinidad and Tobago           TT      TT
#>       3L              Taiwan           TW      TW
#>       3L      United Kingdom           UK      UK
#>       3L                 USA           US      US
#>       3L            Zimbabwe           ZW      ZW
#>       3L    Netherlands_2026           NL NL_2026
#>                                  doi
#>     10.1111/j.1524-4733.2008.00468.x
#>     10.1111/j.1524-4733.2008.00468.x
#>           10.1016/j.jval.2011.04.009
#>            10.1007/s10198-009-0167-0
#>           10.1007/s10198-024-01701-2
#>             10.1177/0272989X15613521
#>         10.1371/journal.pone.0031115
#>          10.1016/j.jval.2011.09.002.
#>           10.1016/j.jval.2014.05.007
#>            10.1007/s10198-004-0264-z
#>  https://eq-5dpublications.euroqol.o
#>             10.1177/1403494809105287
#>           10.1177/0272989X0102100102
#>  https://eq-5dpublications.euroqol.o
#>            10.1007/s10198-011-0351-x
#>           10.1016/j.jval.2020.03.019
#>                  10.5812/ircmj.21584
#>           10.1016/j.jval.2013.04.008
#>           10.1007/s10198-024-01712-z
#>                      10.1002/hec.673
#>     10.1111/j.1524-4733.2009.00579.x
#>            10.1007/s11136-014-0906-2
#>           10.1016/j.jval.2011.11.024
#>                     10.1002/hec.1124
#>                      10.1002/hec.741
#>           10.1007/s41669-023-00437-8
#>     10.1111/j.1524-4733.2009.00596.x
#>            10.1007/s11136-013-0448-z
#>            10.1007/s11136-013-0496-4
#>            10.1007/s40273-014-0142-1
#>               10.2478/sjph-2020-0002
#>               10.2478/sjph-2020-0003
#>           10.1016/j.jval.2011.06.005
#>           10.1007/s11136-020-02730-z
#>           10.1016/j.vhri.2016.07.010
#>           10.1016/j.jfma.2012.12.015
#>     10.1097/00005650-199711000-00002
#>     10.1097/00005650-200503000-00003
#>               10.1186/1478-7954-1-11
#>           10.1007/s10198-025-01892-2
#> No user-defined value sets available.

Calculating EQ-5D values

EQ-5D-3L

The most common workflow uses a data frame with one column per EQ-5D dimension. The dim.names argument maps your column names to the five dimensions in the standard order (mobility, self-care, usual activities, pain/discomfort, anxiety/depression):

# Example data with EQ-5D-3L responses
eq5d3l_data <- data.frame(
  id = 1:5,
  mo = c(1, 2, 1, 3, 2),
  sc = c(1, 1, 2, 2, 1),
  ua = c(1, 2, 1, 3, 2),
  pd = c(2, 2, 1, 3, 3),
  ad = c(1, 1, 2, 2, 1)
)

# Calculate EQ-5D-3L values using the UK value set
eq5d3l_data$value <- eq5d3l(
  eq5d3l_data,
  country   = "UK",
  dim.names = c("mo", "sc", "ua", "pd", "ad")
)

eq5d3l_data
#>   id mo sc ua pd ad      value
#> 1  1  1  1  1  2  1  0.7960000
#> 2  2  2  1  2  2  1  0.6910000
#> 3  3  1  2  1  1  2  0.7440001
#> 4  4  3  2  3  3  2 -0.3190000
#> 5  5  2  1  2  3  1  0.1590000

EQ-5D-5L

eq5d5l_data <- data.frame(
  id = 1:5,
  mo = c(1, 2, 3, 1, 2),
  sc = c(1, 1, 2, 1, 3),
  ua = c(2, 1, 3, 1, 2),
  pd = c(2, 3, 2, 1, 4),
  ad = c(1, 2, 1, 3, 2)
)

eq5d5l_data$value <- eq5d5l(
  eq5d5l_data,
  country   = "IT",
  dim.names = c("mo", "sc", "ua", "pd", "ad")
)

eq5d5l_data
#>   id mo sc ua pd ad value
#> 1  1  1  1  2  2  1 0.903
#> 2  2  2  1  1  3  2 0.817
#> 3  3  3  2  3  2  1 0.779
#> 4  4  1  1  1  1  3 0.891
#> 5  5  2  3  2  4  2 0.446

EQ-5D-Y-3L

eq5dy3l_data <- data.frame(
  id = 1:5,
  mo = c(1, 2, 1, 2, 3),
  sc = c(1, 1, 2, 1, 2),
  ua = c(2, 1, 1, 3, 2),
  pd = c(1, 2, 3, 2, 1),
  ad = c(2, 1, 2, 1, 3)
)

eq5dy3l_data$value <- eq5dy3l(
  eq5dy3l_data,
  country   = "SI",
  dim.names = c("mo", "sc", "ua", "pd", "ad")
)

eq5dy3l_data
#>   id mo sc ua pd ad value
#> 1  1  1  1  2  1  2 0.777
#> 2  2  2  1  1  2  1 0.755
#> 3  3  1  2  1  3  2 0.374
#> 4  4  2  1  3  2  1 0.433
#> 5  5  3  2  2  1  3 0.163

Custom value sets

If a value set is not yet included in the package, you can add your own using eqvs_add():

# Create a custom value set data frame
custom_vs <- data.frame(
  state = make_all_EQ_indexes(version = "3L"),
  MY_VS = runif(243)
)

# Register it temporarily for this session
eqvs_add(
  custom_vs,
  version     = "3L",
  country     = "My Country",
  countryCode = "MC",
  VSCode      = "MC",
  description = "Custom value set for demonstration",
  saveOption  = 1
)

# Use the custom value set
eq5d3l(c(11111, 12321), country = "MC")

Keeping value sets up to date

New EQ-5D value sets are published regularly. Use update_value_sets() to check for and install new value sets from the online repository:

update_value_sets()

Next steps

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.