TILDA Resources
  • Questionnaire Harmonisation
  • Questionnaire Scales
  • Scale Harmonisation
  • Health Assessment
  • Biomarkers
  • Back to TILDA Homepage
  1. Housing Conditions
  • 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

HousingConditions

Accommodation Scale - 21

Measuring: Problems with the home.

Number of Items: 21

Item Question Wording TILDA Variable
1 A leaking roof? SCQAccom1
2 Leaking or moisture getting in through walls? SCQAccom2
3 Leaking or moisture getting in at door or windows? SCQAccom3
4 Leaks from water pipes? SCQAccom4
5 Rising damp? SCQAccom5
6 Condensation dampness? SCQAccom6
7 General dampness from unknown sources? SCQAccom7
8 Mould on walls/ceilings etc? SCQAccom8
9 Corrosion or rot around any external door(s)? SCQAccom9
10 Badly fitting doors? SCQAccom10
11 Corrosion or rot around any window(s)? SCQAccom11
12 Leaky or draughty windows? SCQAccom12
13 Windows that don’t open/close properly? SCQAccom13
14 Rot in timbers other than windows/doors? SCQAccom14
15 Such as rot in joists, floorboards etc? SCQAccom15
16 Structural cracks in internal or external SUPPORT walls? SCQAccom16
17 Subsidence in floors? SCQAccom17
18 Pests – rats, mice, cockroaches? SCQAccom18
19 Noise from neighbouring houses? SCQAccom19
20 Difficulty in heating your accommodation? SCQAccom20
21 Difficulty in cooling your accommodation? SCQAccom21
22 Other problems, please specify. SCQAccom20oth

Note:

  • Item 21 is only included in Wave 7.

Scoring Method:

  • 1 = Yes

  • 0 = No

Items are evaluated individually, or can be assessed under 5 categories;

Moisture, damp, mould

  • Items 1-8

Structural

  • Items 9-17

Heating

  • Items 20-21

Pests

  • Item 18

Noise

  • Item 19

Citation: https://tilda.tcd.ie/publications/reports/pdf/Report_HousingConditions.pdf

Example TILDA Papers: Orr, J., Scarlett, S., Donoghue, O., McGarrigle, C., & Place, L. (2016). Housing Conditions of Ireland's Older Population. Implications for Physical and Mental Health. The Irish Longitudinal Study on Ageing on behalf of TILDA, 2016-02.

Code

  • Stata
  • R
  • SPSS
*---------------------------------------------------------------*
* 1. Dichotomous accommodation problems
*
* 0 = No problem
* 1 = Problem
*---------------------------------------------------------------*

forvalues i = 1/20 {

    recode SCQAccom`i' ///
        (min/0 = .) ///
        (1 = 0) ///
        (2/max = 1), ///
        gen(Accomm`i')
}


* Some routing/error codes indicate presence of the problem
* according to the original scoring code

replace Accomm1  = 1 if SCQAccom1  == -823
replace Accomm3  = 1 if SCQAccom3  == -834
replace Accomm5  = 1 if SCQAccom5  == -834

replace Accomm9  = 1 if ///
    inlist(SCQAccom9, -834, -823)

replace Accomm10 = 1 if SCQAccom10 == -823
replace Accomm15 = 1 if SCQAccom15 == -834
replace Accomm16 = 1 if SCQAccom16 == -834
replace Accomm18 = 1 if SCQAccom18 == -823


capture label drop Accomm01
label define Accomm01 ///
    0 "No problem" ///
    1 "Problem"

label values Accomm1-Accomm20 Accomm01


*---------------------------------------------------------------*
* 2. Number of accommodation problems
*
* Original code uses Items 1-19
*---------------------------------------------------------------*

egen AccommProbs1 = rowtotal(Accomm1-Accomm19)

egen AccommProbs_missing = rowmiss(Accomm1-Accomm19)

replace AccommProbs1 = . if AccommProbs_missing > 0

label variable AccommProbs1 ///
    "Number of accommodation problems"

drop AccommProbs_missing


*---------------------------------------------------------------*
* 3. Accommodation problem severity items
*
* Original:
* 1 -> 0
* 2 -> 1
* 3 -> 2
* 4 -> 3
*
* Range for each item: 0-3
*---------------------------------------------------------------*

forvalues i = 1/20 {

    recode SCQAccom`i' ///
        (min/0 = .) ///
        (1 = 0) ///
        (2 = 1) ///
        (3 = 2) ///
        (4 = 3) ///
        (else = .), ///
        gen(AccommP`i')
}


*---------------------------------------------------------------*
* 4. Overall accommodation problem severity scale
*
* Original scale uses Items 1-19
* Range: 0-57
*---------------------------------------------------------------*

egen ProbScale = rowtotal(AccommP1-AccommP19)

egen ProbScale_missing = rowmiss(AccommP1-AccommP19)

replace ProbScale = . if ProbScale_missing > 0

label variable ProbScale ///
    "Accommodation problems severity scale (0-57)"

drop ProbScale_missing


*---------------------------------------------------------------*
* 5. Categorical accommodation problem scale
*---------------------------------------------------------------*

gen HProbsScale = .

replace HProbsScale = 0 if ProbScale == 0
replace HProbsScale = 1 if inrange(ProbScale, 1, 2)
replace HProbsScale = 2 if inrange(ProbScale, 3, 57)

capture label drop HProbsScale
label define HProbsScale ///
    0 "None" ///
    1 "One or two minor" ///
    2 "A few or more"

label values HProbsScale HProbsScale

label variable HProbsScale ///
    "Accommodation problem categories"


*---------------------------------------------------------------*
* 6. Any accommodation problem
*
* 0 if at least one valid item is 0 and none are 1
* 1 if any accommodation problem is present
* Missing if all 20 indicators are missing
*---------------------------------------------------------------*

egen HProbs = rowmax(Accomm1-Accomm20)

capture label drop AccommAny
label define AccommAny ///
    0 "No accommodation problems" ///
    1 "Any problems"

label values HProbs AccommAny

label variable HProbs ///
    "Any accommodation problem"


*---------------------------------------------------------------*
* 7. Accommodation problem categories
*---------------------------------------------------------------*

* Moisture, damp or mould:
* Items 1-8 and 12
egen PDampMould = rowmax( ///
    Accomm1-Accomm8 ///
    Accomm12 ///
)


* Structural problems:
* Items 9-11 and 13-16
egen PStruct = rowmax( ///
    Accomm9-Accomm11 ///
    Accomm13-Accomm16 ///
)


* Individual problem domains
gen PNoise = Accomm18
gen PPest  = Accomm17
gen PHeat  = Accomm19


*---------------------------------------------------------------*
* Labels
*---------------------------------------------------------------*

label variable PDampMould ///
    "Moisture, damp or mould"

label variable PStruct ///
    "Structural"

label variable PNoise ///
    "Noise"

label variable PPest ///
    "Pests"

label variable PHeat ///
    "Heating"


capture label drop ProbsLab1
label define ProbsLab1 ///
    0 "No problem" ///
    1 "Problem"

label values ///
    PDampMould ///
    PStruct ///
    PNoise ///
    PPest ///
    ProbsLab1


capture label drop PHeatLab
label define PHeatLab ///
    0 "No heating difficulties" ///
    1 "Any heating difficulties"

label values PHeat PHeatLab


*---------------------------------------------------------------*
* Checks
*---------------------------------------------------------------*

summarize AccommProbs1 ProbScale

tab HProbsScale, missing
tab HProbs, missing

tab PDampMould, missing
tab PStruct, missing
tab PNoise, missing
tab PPest, missing
tab PHeat, missing

Download Stata .do file


# ---------------------------------------------------------------
# 1. Dichotomous accommodation problems
# 0 = No problem
# 1 = Problem
# ---------------------------------------------------------------

for (i in 1:20) {
  src <- paste0("SCQAccom", i)
  out <- paste0("Accomm", i)
  x <- data[[src]]

  data[[out]] <- NA_real_
  data[[out]][!is.na(x) & x == 1] <- 0
  data[[out]][!is.na(x) & x >= 2] <- 1
}

# Some routing/error codes indicate presence of the problem
# according to the original Stata scoring code.
data$Accomm1[!is.na(data$SCQAccom1) & data$SCQAccom1 == -823] <- 1
data$Accomm3[!is.na(data$SCQAccom3) & data$SCQAccom3 == -834] <- 1
data$Accomm5[!is.na(data$SCQAccom5) & data$SCQAccom5 == -834] <- 1
data$Accomm9[!is.na(data$SCQAccom9) &
             data$SCQAccom9 %in% c(-834, -823)] <- 1
data$Accomm10[!is.na(data$SCQAccom10) & data$SCQAccom10 == -823] <- 1
data$Accomm15[!is.na(data$SCQAccom15) & data$SCQAccom15 == -834] <- 1
data$Accomm16[!is.na(data$SCQAccom16) & data$SCQAccom16 == -834] <- 1
data$Accomm18[!is.na(data$SCQAccom18) & data$SCQAccom18 == -823] <- 1

for (i in 1:20) {
  attr(data[[paste0("Accomm", i)]], "labels") <-
    c("No problem" = 0, "Problem" = 1)
}


# ---------------------------------------------------------------
# 2. Number of accommodation problems
# Original code uses Items 1-19
# ---------------------------------------------------------------

accomm_1_19 <- paste0("Accomm", 1:19)

data$AccommProbs1 <- rowSums(data[accomm_1_19], na.rm = TRUE)
accomm_missing <- rowSums(is.na(data[accomm_1_19]))
data$AccommProbs1[accomm_missing > 0] <- NA_real_

attr(data$AccommProbs1, "label") <- "Number of accommodation problems"


# ---------------------------------------------------------------
# 3. Accommodation problem severity items
# 1->0, 2->1, 3->2, 4->3
# ---------------------------------------------------------------

for (i in 1:20) {
  src <- paste0("SCQAccom", i)
  out <- paste0("AccommP", i)
  x <- data[[src]]

  data[[out]] <- NA_real_
  valid <- !is.na(x) & x >= 1 & x <= 4
  data[[out]][valid] <- x[valid] - 1
}


# ---------------------------------------------------------------
# 4. Overall accommodation problem severity scale
# Original scale uses Items 1-19; range 0-57
# ---------------------------------------------------------------

accommp_1_19 <- paste0("AccommP", 1:19)

data$ProbScale <- rowSums(data[accommp_1_19], na.rm = TRUE)
prob_missing <- rowSums(is.na(data[accommp_1_19]))
data$ProbScale[prob_missing > 0] <- NA_real_

attr(data$ProbScale, "label") <-
  "Accommodation problems severity scale (0-57)"


# ---------------------------------------------------------------
# 5. Categorical accommodation problem scale
# ---------------------------------------------------------------

data$HProbsScale <- NA_real_
data$HProbsScale[!is.na(data$ProbScale) & data$ProbScale == 0] <- 0
data$HProbsScale[!is.na(data$ProbScale) &
                 data$ProbScale >= 1 & data$ProbScale <= 2] <- 1
data$HProbsScale[!is.na(data$ProbScale) &
                 data$ProbScale >= 3 & data$ProbScale <= 57] <- 2

attr(data$HProbsScale, "label") <- "Accommodation problem categories"
attr(data$HProbsScale, "labels") <- c(
  "None" = 0,
  "One or two minor" = 1,
  "A few or more" = 2
)

# ---------------------------------------------------------------
# 6. Any accommodation problem
# Missing only if all 20 indicators are missing
# ---------------------------------------------------------------

rowmax_na <- function(df) {
  out <- apply(df, 1, function(x) {
    if (all(is.na(x))) NA_real_ else max(x, na.rm = TRUE)
  })
  as.numeric(out)
}

data$HProbs <- rowmax_na(data[paste0("Accomm", 1:20)])

attr(data$HProbs, "label") <- "Any accommodation problem"
attr(data$HProbs, "labels") <- c(
  "No accommodation problems" = 0,
  "Any problems" = 1
)


# ---------------------------------------------------------------
# 7. Accommodation problem categories
# ---------------------------------------------------------------

data$PDampMould <- rowmax_na(
  data[c(paste0("Accomm", 1:8), "Accomm12")]
)

data$PStruct <- rowmax_na(
  data[c(paste0("Accomm", 9:11), paste0("Accomm", 13:16))]
)

data$PNoise <- data$Accomm18
data$PPest  <- data$Accomm17
data$PHeat  <- data$Accomm19

attr(data$PDampMould, "label") <- "Moisture, damp or mould"
attr(data$PStruct, "label") <- "Structural"
attr(data$PNoise, "label") <- "Noise"
attr(data$PPest, "label") <- "Pests"
attr(data$PHeat, "label") <- "Heating"

problem_labels <- c("No problem" = 0, "Problem" = 1)
attr(data$PDampMould, "labels") <- problem_labels
attr(data$PStruct, "labels") <- problem_labels
attr(data$PNoise, "labels") <- problem_labels
attr(data$PPest, "labels") <- problem_labels
attr(data$PHeat, "labels") <- c(
  "No heating difficulties" = 0,
  "Any heating difficulties" = 1
)


# ---------------------------------------------------------------
# Checks
# ---------------------------------------------------------------

summary(data[c("AccommProbs1", "ProbScale")])
table(data$HProbsScale, useNA = "ifany")
table(data$HProbs, useNA = "ifany")
table(data$PDampMould, useNA = "ifany")
table(data$PStruct, useNA = "ifany")
table(data$PNoise, useNA = "ifany")
table(data$PPest, useNA = "ifany")
table(data$PHeat, useNA = "ifany")

Download R file


*---------------------------------------------------------------*
* 1. Dichotomous accommodation problems
*
* 0 = No problem
* 1 = Problem
*---------------------------------------------------------------*

forvalues i = 1/20 {

    recode SCQAccom`i' ///
        (min/0 = .) ///
        (1 = 0) ///
        (2/max = 1), ///
        gen(Accomm`i')
}


* Some routing/error codes indicate presence of the problem
* according to the original scoring code

replace Accomm1  = 1 if SCQAccom1  == -823
replace Accomm3  = 1 if SCQAccom3  == -834
replace Accomm5  = 1 if SCQAccom5  == -834

replace Accomm9  = 1 if ///
    inlist(SCQAccom9, -834, -823)

replace Accomm10 = 1 if SCQAccom10 == -823
replace Accomm15 = 1 if SCQAccom15 == -834
replace Accomm16 = 1 if SCQAccom16 == -834
replace Accomm18 = 1 if SCQAccom18 == -823


capture label drop Accomm01
label define Accomm01 ///
    0 "No problem" ///
    1 "Problem"

label values Accomm1-Accomm20 Accomm01


*---------------------------------------------------------------*
* 2. Number of accommodation problems
*
* Original code uses Items 1-19
*---------------------------------------------------------------*

egen AccommProbs1 = rowtotal(Accomm1-Accomm19)

egen AccommProbs_missing = rowmiss(Accomm1-Accomm19)

replace AccommProbs1 = . if AccommProbs_missing > 0

label variable AccommProbs1 ///
    "Number of accommodation problems"

drop AccommProbs_missing


*---------------------------------------------------------------*
* 3. Accommodation problem severity items
*
* Original:
* 1 -> 0
* 2 -> 1
* 3 -> 2
* 4 -> 3
*
* Range for each item: 0-3
*---------------------------------------------------------------*

forvalues i = 1/20 {

    recode SCQAccom`i' ///
        (min/0 = .) ///
        (1 = 0) ///
        (2 = 1) ///
        (3 = 2) ///
        (4 = 3) ///
        (else = .), ///
        gen(AccommP`i')
}


*---------------------------------------------------------------*
* 4. Overall accommodation problem severity scale
*
* Original scale uses Items 1-19
* Range: 0-57
*---------------------------------------------------------------*

egen ProbScale = rowtotal(AccommP1-AccommP19)

egen ProbScale_missing = rowmiss(AccommP1-AccommP19)

replace ProbScale = . if ProbScale_missing > 0

label variable ProbScale ///
    "Accommodation problems severity scale (0-57)"

drop ProbScale_missing


*---------------------------------------------------------------*
* 5. Categorical accommodation problem scale
*---------------------------------------------------------------*

gen HProbsScale = .

replace HProbsScale = 0 if ProbScale == 0
replace HProbsScale = 1 if inrange(ProbScale, 1, 2)
replace HProbsScale = 2 if inrange(ProbScale, 3, 57)

capture label drop HProbsScale
label define HProbsScale ///
    0 "None" ///
    1 "One or two minor" ///
    2 "A few or more"

label values HProbsScale HProbsScale

label variable HProbsScale ///
    "Accommodation problem categories"


*---------------------------------------------------------------*
* 6. Any accommodation problem
*
* 0 if at least one valid item is 0 and none are 1
* 1 if any accommodation problem is present
* Missing if all 20 indicators are missing
*---------------------------------------------------------------*

egen HProbs = rowmax(Accomm1-Accomm20)

capture label drop AccommAny
label define AccommAny ///
    0 "No accommodation problems" ///
    1 "Any problems"

label values HProbs AccommAny

label variable HProbs ///
    "Any accommodation problem"


*---------------------------------------------------------------*
* 7. Accommodation problem categories
*---------------------------------------------------------------*

* Moisture, damp or mould:
* Items 1-8 and 12
egen PDampMould = rowmax( ///
    Accomm1-Accomm8 ///
    Accomm12 ///
)


* Structural problems:
* Items 9-11 and 13-16
egen PStruct = rowmax( ///
    Accomm9-Accomm11 ///
    Accomm13-Accomm16 ///
)


* Individual problem domains
gen PNoise = Accomm18
gen PPest  = Accomm17
gen PHeat  = Accomm19


*---------------------------------------------------------------*
* Labels
*---------------------------------------------------------------*

label variable PDampMould ///
    "Moisture, damp or mould"

label variable PStruct ///
    "Structural"

label variable PNoise ///
    "Noise"

label variable PPest ///
    "Pests"

label variable PHeat ///
    "Heating"


capture label drop ProbsLab1
label define ProbsLab1 ///
    0 "No problem" ///
    1 "Problem"

label values ///
    PDampMould ///
    PStruct ///
    PNoise ///
    PPest ///
    ProbsLab1


capture label drop PHeatLab
label define PHeatLab ///
    0 "No heating difficulties" ///
    1 "Any heating difficulties"

label values PHeat PHeatLab


*---------------------------------------------------------------*
* Checks
*---------------------------------------------------------------*

summarize AccommProbs1 ProbScale

tab HProbsScale, missing
tab HProbs, missing

tab PDampMould, missing
tab PStruct, missing
tab PNoise, missing
tab PPest, missing
tab PHeat, missing

Download SPSS .sps file

HADS-A
IADL

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

 

TILDA, Department of Health and Health Research Board