# Scale ID: 			APQ-32
# Scale Name: 		Ageing Perceptions 32-item
# TILDA Variables: 	MHapq_tl_accr; MHapq_tl_cyc; MHapq_emo; MHapq_ctpve; MHapq_ctnve; MHapq_cqpve; MHapq_cqnve
# Dataset:      		TILDA Waves 1-2
# Author:
# Institution:  		The Irish Longitudinal Study on Ageing (TILDA)
# 
# Description:
# Creates the Apeing Perceptions Questionnaire (32 item) scale and all associated sub-scales
# 
# Version:      1.0
# Date:         2026-09-01
# Language:     R

# Assumption: the working data frame is called `data`.

apq_vars <- paste0("SCQAgePrc", 1:32)

# Recode 999, -99, and all values from -1000 through -1 to missing.
for (v in apq_vars) {
  x <- data[[v]]
  x[x == 999 | x == -99 | (!is.na(x) & x >= -1000 & x <= -1)] <- NA_real_
  data[[v]] <- x
}

# The Stata rowmean() calculations are subsequently set to missing if any
# contributing item is missing, so complete-case row means are used here.
data$MHapq_tl_accr <- rowMeans(
  data[paste0("SCQAgePrc", c(1,2,3,4,5))], na.rm = FALSE)

data$MHapq_tl_cyc <- rowMeans(
  data[paste0("SCQAgePrc", c(27,28,30,31,32))], na.rm = FALSE)

data$MHapq_emo <- rowMeans(
  data[paste0("SCQAgePrc", c(9,13,25,26,29))], na.rm = FALSE)

data$MHapq_ctpve <- rowMeans(
  data[paste0("SCQAgePrc", c(10,11,12,14,15))], na.rm = FALSE)

data$MHapq_ctnve <- rowMeans(
  data[paste0("SCQAgePrc", c(21,22,23,24))], na.rm = FALSE)
data$MHapq_ctnve <- 6 - data$MHapq_ctnve

data$MHapq_cqpve <- rowMeans(
  data[paste0("SCQAgePrc", c(6,7,8))], na.rm = FALSE)

data$MHapq_cqnve <- rowMeans(
  data[paste0("SCQAgePrc", c(16,17,18,19,20))], na.rm = FALSE)

attr(data$MHapq_tl_accr, "label") <- "APQ - Timeline Chronic/Acute"
attr(data$MHapq_tl_cyc, "label") <- "APQ - Timeline Cyclic"
attr(data$MHapq_emo, "label") <- "APQ - Emotional Representations"
attr(data$MHapq_ctpve, "label") <- "APQ - Control Positive"
attr(data$MHapq_ctnve, "label") <- "APQ - Control Negative"
attr(data$MHapq_cqpve, "label") <- "APQ - Consequences Positive"
attr(data$MHapq_cqnve, "label") <- "APQ - Consequences Negative"

data$MHapqmiss <- NA_real_
eligible <- !is.na(data$has_scq) & data$has_scq == 1
data$MHapqmiss[eligible] <- 0

for (i in 1:32) {
  v <- paste0("SCQAgePrc", i)
  missv <- paste0("SCQAgePrcmiss", i)
  data[[missv]] <- NA
  data[[missv]][eligible] <- abs(data[[v]][eligible]) > 10
  data$MHapqmiss[eligible & is.na(data[[v]])] <-
    data$MHapqmiss[eligible & is.na(data[[v]])] + 1
}

for (v in c("MHapq_tl_accr","MHapq_emo","MHapq_ctpve",
            "MHapq_ctnve","MHapq_cqpve","MHapq_cqnve","MHapq_tl_cyc")) {
  data[[v]][!is.na(data[[v]]) & (data[[v]] < 0 | data[[v]] > 20)] <- NA_real_
}

data[grep("^SCQAgePrcmiss", names(data), value = TRUE)] <- NULL
