TILDA Resources
  • Questionnaire Harmonisation
  • Questionnaire Scales
  • Scale Harmonisation
  • Health Assessment
  • Biomarkers
  • Back to TILDA Homepage
  1. Relationship Quality
  • Questionnaire Scales
  • ADL
  • AMT
  • APQ-17
  • APQ-32
  • CAGE
  • CASP-12
  • CASP-19
  • CESD-20
  • CESD-8
  • CIDI-SF-Anxiety
  • CIDI-SF-Depression
  • CISS-21
  • Creative Lives
  • Everyday Ageism
  • EQ-5D-5L
  • FES-I
  • Flourishing
  • GAD-7
  • Gratitude
  • HADS-A
  • Housing Conditions
  • IADL
  • IPAQ
  • IPAQ-E
  • IQCODE
  • MHC-SF
  • MESA
  • MMSE
  • MCSI
  • MCTQ
  • Neighbourhood Cohesion
  • NEO-PI
  • PSS
  • PWSQ
  • PCL-6
  • PIL
  • Relationship Quality
  • SWLS
  • Social Activities
  • STAI
  • UCLA

Relationship scale

Relationship Quality Scale – Spouse/Child/Family

Measuring: Assess the quality of social support received from spouses/partners/friends/family.

Number of Items: 7

Item

1

Question Wording

How much does he/she really understand the way you feel about things?

TILDA Variable | ====================================+ SCQQRSpou1 SCQQRChld1 SCQQROtherFam1
2 How much can you rely on him/her if you have a serious problem? SCQQRSpou2 | | SCQQRChld2 SCQQROtherFam2
3 How much can you open up to him/her if you need to talk about your worries? SCQQRSpou3 SCQQRChld3 SCQQROtherFam3
4 How much does he/she make too many demands on you? SCQQRSpou4 SCQQRChld4 | | SCQQROtherFam4
5 How much does he/she criticise you? SCQQRSpou5 SCQQRChld5 SCQQROtherFam5
6 How much does he/she let you down when you are counting on him/her? SCQQRSpou6 SCQQRChld6 SCQQROtherFam6
7 How much does he/she get on your nerves? SCQQRSpou7 SCQQRChld7 SCQQROtherFam7

Scoring Method:

Scoring Method:

4-point Likert scale.

1 = A lot

2 = Some

3 = A little

4 = Not at all

  • A cumulative score is generated with higher scores representing poor relationship quality with high strain (0-24).

  • Items 4 – Item 7 are negatively worded, and reverse scored prior to calculation.

Citation: Furman, W., & Buhrmester, D. (2009). The Network of Relationships Inventory: Behavioral Systems Version. International journal of behavioral development, 33(5), 470–478. https://doi.org/10.1177/0165025409342634

Example TILDA Papers:

  • Orr, J., Layte, R., & O'Leary, N. (2019). Sexual Activity and Relationship Quality in Middle and Older Age: Findings From The Irish Longitudinal Study on Ageing (TILDA). The journals of gerontology. Series B, Psychological sciences and social sciences, 74(2), 287–297. https://doi.org/10.1093/geronb/gbx038

Code

  • Stata
  • R
  • SPSS
* Spouse: includes -1 missing by design
mvdecode ///
    SCQQRSpou SCQQRSpou2 SCQQRSpou3 SCQQRSpou4 ///
    SCQQRSpou5 SCQQRSpou6 SCQQRSpou7, ///
    mv(-1=. \ -99=. \ -812=. \ -823=. \ -834=. \ -845=.)

* Children
mvdecode ///
    SCQQRChld SCQQRChld2 SCQQRChld3 SCQQRChld4 ///
    SCQQRChld5 SCQQRChld6 SCQQRChld7, ///
    mv(-99=. \ -812=. \ -823=. \ -834=. \ -845=.)

* Other family
mvdecode ///
    SCQQROtherFam SCQQROtherFam2 SCQQROtherFam3 SCQQROtherFam4 ///
    SCQQROtherFam5 SCQQROtherFam6 SCQQROtherFam7, ///
    mv(-99=. \ -812=. \ -823=. \ -834=. \ -845=.)

* Friends
mvdecode ///
    SCQQRFrend SCQQRFrend2 SCQQRFrend3 SCQQRFrend4 ///
    SCQQRFrend5 SCQQRFrend6 SCQQRFrend7, ///
    mv(-99=. \ -812=. \ -823=. \ -834=. \ -845=.)



foreach rel in Spou Chld OtherFam Frend {

    * Items 1-3: 1-4 becomes 0-3
    gen QR`rel'1_s = SCQQR`rel'  - 1 if inrange(SCQQR`rel',  1, 4)
    gen QR`rel'2_s = SCQQR`rel'2 - 1 if inrange(SCQQR`rel'2, 1, 4)
    gen QR`rel'3_s = SCQQR`rel'3 - 1 if inrange(SCQQR`rel'3, 1, 4)

    * Items 4-7: reverse scored
    * 1->3, 2->2, 3->1, 4->0
    gen QR`rel'4_s = 4 - SCQQR`rel'4 if inrange(SCQQR`rel'4, 1, 4)
    gen QR`rel'5_s = 4 - SCQQR`rel'5 if inrange(SCQQR`rel'5, 1, 4)
    gen QR`rel'6_s = 4 - SCQQR`rel'6 if inrange(SCQQR`rel'6, 1, 4)
    gen QR`rel'7_s = 4 - SCQQR`rel'7 if inrange(SCQQR`rel'7, 1, 4)

    * Calculate total
    egen QR`rel'Score = rowtotal( ///
        QR`rel'1_s QR`rel'2_s QR`rel'3_s QR`rel'4_s ///
        QR`rel'5_s QR`rel'6_s QR`rel'7_s ///
    )

    * Require all seven items to have valid responses
    egen QR`rel'_missing = rowmiss( ///
        QR`rel'1_s QR`rel'2_s QR`rel'3_s QR`rel'4_s ///
        QR`rel'5_s QR`rel'6_s QR`rel'7_s ///
    )

    replace QR`rel'Score = . if QR`rel'_missing > 0
}

label variable QRSpouScore ///
    "Relationship quality with spouse: total strain score (0-21)"

label variable QRChldScore ///
    "Relationship quality with children: total strain score (0-21)"

label variable QROtherFamScore ///
    "Relationship quality with other family: total strain score (0-21)"

label variable QRFrendScore ///
    "Relationship quality with friends: total strain score (0-21)"


drop QRSpou1_s-QRSpou7_s QRSpou_missing
drop QRChld1_s-QRChld7_s QRChld_missing
drop QROtherFam1_s-QROtherFam7_s QROtherFam_missing
drop QRFrend1_s-QRFrend7_s QRFrend_missing

Download Stata .do file

# ---------------------------------------------------------------
# Recode special missing values
# ---------------------------------------------------------------

special_missing <- c(-99, -812, -823, -834, -845)

# Spouse: includes -1 missing by design
spouse_items <- c(
  "SCQQRSpou", "SCQQRSpou2", "SCQQRSpou3", "SCQQRSpou4",
  "SCQQRSpou5", "SCQQRSpou6", "SCQQRSpou7"
)

for (v in spouse_items) {
  data[[v]][data[[v]] %in% c(-1, special_missing)] <- NA_real_
}

# Children
child_items <- c(
  "SCQQRChld", "SCQQRChld2", "SCQQRChld3", "SCQQRChld4",
  "SCQQRChld5", "SCQQRChld6", "SCQQRChld7"
)

for (v in child_items) {
  data[[v]][data[[v]] %in% special_missing] <- NA_real_
}

# Other family
otherfam_items <- c(
  "SCQQROtherFam", "SCQQROtherFam2", "SCQQROtherFam3", "SCQQROtherFam4",
  "SCQQROtherFam5", "SCQQROtherFam6", "SCQQROtherFam7"
)

for (v in otherfam_items) {
  data[[v]][data[[v]] %in% special_missing] <- NA_real_
}

# Friends
friend_items <- c(
  "SCQQRFrend", "SCQQRFrend2", "SCQQRFrend3", "SCQQRFrend4",
  "SCQQRFrend5", "SCQQRFrend6", "SCQQRFrend7"
)

for (v in friend_items) {
  data[[v]][data[[v]] %in% special_missing] <- NA_real_
}


# ---------------------------------------------------------------
# Score each relationship scale
# ---------------------------------------------------------------

score_relationship <- function(data, rel, prefix) {

  raw_vars <- c(prefix, paste0(prefix, 2:7))
  score_vars <- paste0("QR", rel, 1:7, "_s")

  # Items 1-3: 1-4 becomes 0-3
  for (i in 1:3) {
    x <- data[[raw_vars[i]]]
    data[[score_vars[i]]] <- ifelse(
      !is.na(x) & x >= 1 & x <= 4,
      x - 1,
      NA_real_
    )
  }

  # Items 4-7: reverse scored
  # 1->3, 2->2, 3->1, 4->0
  for (i in 4:7) {
    x <- data[[raw_vars[i]]]
    data[[score_vars[i]]] <- ifelse(
      !is.na(x) & x >= 1 & x <= 4,
      4 - x,
      NA_real_
    )
  }

  # Sum items
  score_name <- paste0("QR", rel, "Score")
  data[[score_name]] <- rowSums(data[score_vars], na.rm = TRUE)

  # Require all seven items to have valid responses
  missing_name <- paste0("QR", rel, "_missing")
  data[[missing_name]] <- rowSums(is.na(data[score_vars]))
  data[[score_name]][data[[missing_name]] > 0] <- NA_real_

  data
}

data <- score_relationship(data, "Spou", "SCQQRSpou")
data <- score_relationship(data, "Chld", "SCQQRChld")
data <- score_relationship(data, "OtherFam", "SCQQROtherFam")
data <- score_relationship(data, "Frend", "SCQQRFrend")


# ---------------------------------------------------------------
# Variable labels
# ---------------------------------------------------------------

attr(data$QRSpouScore, "label") <-
  "Relationship quality with spouse: total strain score (0-21)"

attr(data$QRChldScore, "label") <-
  "Relationship quality with children: total strain score (0-21)"

attr(data$QROtherFamScore, "label") <-
  "Relationship quality with other family: total strain score (0-21)"

attr(data$QRFrendScore, "label") <-
  "Relationship quality with friends: total strain score (0-21)"


# ---------------------------------------------------------------
# Drop temporary scoring variables
# ---------------------------------------------------------------

temporary_vars <- c(
  paste0("QRSpou", 1:7, "_s"), "QRSpou_missing",
  paste0("QRChld", 1:7, "_s"), "QRChld_missing",
  paste0("QROtherFam", 1:7, "_s"), "QROtherFam_missing",
  paste0("QRFrend", 1:7, "_s"), "QRFrend_missing"
)

data[temporary_vars] <- NULL

Download R file

* ---------------------------------------------------------------.
* Recode special missing values.
* ---------------------------------------------------------------.

* Spouse: includes -1 missing by design.
RECODE
  SCQQRSpou SCQQRSpou2 SCQQRSpou3 SCQQRSpou4
  SCQQRSpou5 SCQQRSpou6 SCQQRSpou7
  (-1=SYSMIS) (-99=SYSMIS) (-812=SYSMIS) (-823=SYSMIS)
  (-834=SYSMIS) (-845=SYSMIS).

* Children.
RECODE
  SCQQRChld SCQQRChld2 SCQQRChld3 SCQQRChld4
  SCQQRChld5 SCQQRChld6 SCQQRChld7
  (-99=SYSMIS) (-812=SYSMIS) (-823=SYSMIS)
  (-834=SYSMIS) (-845=SYSMIS).

* Other family.
RECODE
  SCQQROtherFam SCQQROtherFam2 SCQQROtherFam3 SCQQROtherFam4
  SCQQROtherFam5 SCQQROtherFam6 SCQQROtherFam7
  (-99=SYSMIS) (-812=SYSMIS) (-823=SYSMIS)
  (-834=SYSMIS) (-845=SYSMIS).

* Friends.
RECODE
  SCQQRFrend SCQQRFrend2 SCQQRFrend3 SCQQRFrend4
  SCQQRFrend5 SCQQRFrend6 SCQQRFrend7
  (-99=SYSMIS) (-812=SYSMIS) (-823=SYSMIS)
  (-834=SYSMIS) (-845=SYSMIS).


* ---------------------------------------------------------------.
* Score spouse relationship scale.
* ---------------------------------------------------------------.

COMPUTE QRSpou1_s = $SYSMIS.
IF (RANGE(SCQQRSpou,1,4)) QRSpou1_s = SCQQRSpou - 1.

COMPUTE QRSpou2_s = $SYSMIS.
IF (RANGE(SCQQRSpou2,1,4)) QRSpou2_s = SCQQRSpou2 - 1.

COMPUTE QRSpou3_s = $SYSMIS.
IF (RANGE(SCQQRSpou3,1,4)) QRSpou3_s = SCQQRSpou3 - 1.

COMPUTE QRSpou4_s = $SYSMIS.
IF (RANGE(SCQQRSpou4,1,4)) QRSpou4_s = 4 - SCQQRSpou4.

COMPUTE QRSpou5_s = $SYSMIS.
IF (RANGE(SCQQRSpou5,1,4)) QRSpou5_s = 4 - SCQQRSpou5.

COMPUTE QRSpou6_s = $SYSMIS.
IF (RANGE(SCQQRSpou6,1,4)) QRSpou6_s = 4 - SCQQRSpou6.

COMPUTE QRSpou7_s = $SYSMIS.
IF (RANGE(SCQQRSpou7,1,4)) QRSpou7_s = 4 - SCQQRSpou7.

COMPUTE QRSpouScore = SUM(
  QRSpou1_s, QRSpou2_s, QRSpou3_s, QRSpou4_s,
  QRSpou5_s, QRSpou6_s, QRSpou7_s
).

COMPUTE QRSpou_missing = NMISS(
  QRSpou1_s, QRSpou2_s, QRSpou3_s, QRSpou4_s,
  QRSpou5_s, QRSpou6_s, QRSpou7_s
).

IF (QRSpou_missing > 0) QRSpouScore = $SYSMIS.


* ---------------------------------------------------------------.
* Score children relationship scale.
* ---------------------------------------------------------------.

COMPUTE QRChld1_s = $SYSMIS.
IF (RANGE(SCQQRChld,1,4)) QRChld1_s = SCQQRChld - 1.

COMPUTE QRChld2_s = $SYSMIS.
IF (RANGE(SCQQRChld2,1,4)) QRChld2_s = SCQQRChld2 - 1.

COMPUTE QRChld3_s = $SYSMIS.
IF (RANGE(SCQQRChld3,1,4)) QRChld3_s = SCQQRChld3 - 1.

COMPUTE QRChld4_s = $SYSMIS.
IF (RANGE(SCQQRChld4,1,4)) QRChld4_s = 4 - SCQQRChld4.

COMPUTE QRChld5_s = $SYSMIS.
IF (RANGE(SCQQRChld5,1,4)) QRChld5_s = 4 - SCQQRChld5.

COMPUTE QRChld6_s = $SYSMIS.
IF (RANGE(SCQQRChld6,1,4)) QRChld6_s = 4 - SCQQRChld6.

COMPUTE QRChld7_s = $SYSMIS.
IF (RANGE(SCQQRChld7,1,4)) QRChld7_s = 4 - SCQQRChld7.

COMPUTE QRChldScore = SUM(
  QRChld1_s, QRChld2_s, QRChld3_s, QRChld4_s,
  QRChld5_s, QRChld6_s, QRChld7_s
).

COMPUTE QRChld_missing = NMISS(
  QRChld1_s, QRChld2_s, QRChld3_s, QRChld4_s,
  QRChld5_s, QRChld6_s, QRChld7_s
).

IF (QRChld_missing > 0) QRChldScore = $SYSMIS.


* ---------------------------------------------------------------.
* Score other-family relationship scale.
* ---------------------------------------------------------------.

COMPUTE QROtherFam1_s = $SYSMIS.
IF (RANGE(SCQQROtherFam,1,4)) QROtherFam1_s = SCQQROtherFam - 1.

COMPUTE QROtherFam2_s = $SYSMIS.
IF (RANGE(SCQQROtherFam2,1,4)) QROtherFam2_s = SCQQROtherFam2 - 1.

COMPUTE QROtherFam3_s = $SYSMIS.
IF (RANGE(SCQQROtherFam3,1,4)) QROtherFam3_s = SCQQROtherFam3 - 1.

COMPUTE QROtherFam4_s = $SYSMIS.
IF (RANGE(SCQQROtherFam4,1,4)) QROtherFam4_s = 4 - SCQQROtherFam4.

COMPUTE QROtherFam5_s = $SYSMIS.
IF (RANGE(SCQQROtherFam5,1,4)) QROtherFam5_s = 4 - SCQQROtherFam5.

COMPUTE QROtherFam6_s = $SYSMIS.
IF (RANGE(SCQQROtherFam6,1,4)) QROtherFam6_s = 4 - SCQQROtherFam6.

COMPUTE QROtherFam7_s = $SYSMIS.
IF (RANGE(SCQQROtherFam7,1,4)) QROtherFam7_s = 4 - SCQQROtherFam7.

COMPUTE QROtherFamScore = SUM(
  QROtherFam1_s, QROtherFam2_s, QROtherFam3_s, QROtherFam4_s,
  QROtherFam5_s, QROtherFam6_s, QROtherFam7_s
).

COMPUTE QROtherFam_missing = NMISS(
  QROtherFam1_s, QROtherFam2_s, QROtherFam3_s, QROtherFam4_s,
  QROtherFam5_s, QROtherFam6_s, QROtherFam7_s
).

IF (QROtherFam_missing > 0) QROtherFamScore = $SYSMIS.


* ---------------------------------------------------------------.
* Score friends relationship scale.
* ---------------------------------------------------------------.

COMPUTE QRFrend1_s = $SYSMIS.
IF (RANGE(SCQQRFrend,1,4)) QRFrend1_s = SCQQRFrend - 1.

COMPUTE QRFrend2_s = $SYSMIS.
IF (RANGE(SCQQRFrend2,1,4)) QRFrend2_s = SCQQRFrend2 - 1.

COMPUTE QRFrend3_s = $SYSMIS.
IF (RANGE(SCQQRFrend3,1,4)) QRFrend3_s = SCQQRFrend3 - 1.

COMPUTE QRFrend4_s = $SYSMIS.
IF (RANGE(SCQQRFrend4,1,4)) QRFrend4_s = 4 - SCQQRFrend4.

COMPUTE QRFrend5_s = $SYSMIS.
IF (RANGE(SCQQRFrend5,1,4)) QRFrend5_s = 4 - SCQQRFrend5.

COMPUTE QRFrend6_s = $SYSMIS.
IF (RANGE(SCQQRFrend6,1,4)) QRFrend6_s = 4 - SCQQRFrend6.

COMPUTE QRFrend7_s = $SYSMIS.
IF (RANGE(SCQQRFrend7,1,4)) QRFrend7_s = 4 - SCQQRFrend7.

COMPUTE QRFrendScore = SUM(
  QRFrend1_s, QRFrend2_s, QRFrend3_s, QRFrend4_s,
  QRFrend5_s, QRFrend6_s, QRFrend7_s
).

COMPUTE QRFrend_missing = NMISS(
  QRFrend1_s, QRFrend2_s, QRFrend3_s, QRFrend4_s,
  QRFrend5_s, QRFrend6_s, QRFrend7_s
).

IF (QRFrend_missing > 0) QRFrendScore = $SYSMIS.


* ---------------------------------------------------------------.
* Variable labels.
* ---------------------------------------------------------------.

VARIABLE LABELS
  QRSpouScore
    "Relationship quality with spouse: total strain score (0-21)"
  QRChldScore
    "Relationship quality with children: total strain score (0-21)"
  QROtherFamScore
    "Relationship quality with other family: total strain score (0-21)"
  QRFrendScore
    "Relationship quality with friends: total strain score (0-21)".


* ---------------------------------------------------------------.
* Drop temporary variables.
* ---------------------------------------------------------------.

DELETE VARIABLES
  QRSpou1_s QRSpou2_s QRSpou3_s QRSpou4_s
  QRSpou5_s QRSpou6_s QRSpou7_s QRSpou_missing
  QRChld1_s QRChld2_s QRChld3_s QRChld4_s
  QRChld5_s QRChld6_s QRChld7_s QRChld_missing
  QROtherFam1_s QROtherFam2_s QROtherFam3_s QROtherFam4_s
  QROtherFam5_s QROtherFam6_s QROtherFam7_s QROtherFam_missing
  QRFrend1_s QRFrend2_s QRFrend3_s QRFrend4_s
  QRFrend5_s QRFrend6_s QRFrend7_s QRFrend_missing.

EXECUTE.

Download SPSS .sps file

PIL
SWLS

Copyright 2026, The Irish Longitudinal Study on Ageing (TILDA)

 

TILDA, Department of Health and Health Research Board