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

# Assumption: the working data frame is called `data`.
# The source file contains a naming typo: it generates recSCQAgePrc24w1,
# then uses recSCQAgePrc24. This translation uses recSCQAgePrc24 so the
# intended scoring can run.

apq_vars <- grep("^SCQAgePrc", names(data), value = TRUE)
special_missing <- c(-99, -812, -823, -834, -845, 99)

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

# Reverse-scored items in the executable source.
for (i in c(17, 19, 20, 21, 24)) {
  src <- paste0("SCQAgePrc", i)
  dst <- paste0("recSCQAgePrc", i)
  data[[dst]] <- NA_real_
  ok <- !is.na(data[[src]]) & data[[src]] %in% 1:5
  data[[dst]][ok] <- 6 - data[[src]][ok]
}

# Intermediate subscale variables retained from the source.
data$timeline_chronic_sf <-
  data$SCQAgePrc3 + data$SCQAgePrc4 + data$SCQAgePrc5
data$consequenses_positive_sf <-
  data$SCQAgePrc6 + data$SCQAgePrc7 + data$SCQAgePrc8
data$control_positive_sf <-
  data$SCQAgePrc10 + data$SCQAgePrc11 + data$SCQAgePrc12
data$consequenses_negative_sf <-
  data$recSCQAgePrc17 + data$recSCQAgePrc19 + data$recSCQAgePrc20
data$control_negative_sf <-
  data$recSCQAgePrc21 + data$recSCQAgePrc24
data$emotional_representation_sf <-
  data$SCQAgePrc9 + data$SCQAgePrc26 + data$SCQAgePrc29

# TILDA short-form output variables.
data$MHapq_tl_accr_sf <-
  data$SCQAgePrc3 + data$SCQAgePrc4 + data$SCQAgePrc5
data$MHapq_cqpve_sf <-
  data$SCQAgePrc6 + data$SCQAgePrc7 + data$SCQAgePrc8
data$MHapq_ctpve_sf <-
  data$SCQAgePrc10 + data$SCQAgePrc11 + data$SCQAgePrc12
data$MHapq_cqnve_sf <-
  data$recSCQAgePrc17 + data$recSCQAgePrc19 + data$recSCQAgePrc20
data$MHapq_ctnve_sf <-
  data$recSCQAgePrc21 + data$recSCQAgePrc24
data$MHapq_emo_sf <-
  data$SCQAgePrc9 + data$SCQAgePrc26 + data$SCQAgePrc29

attr(data$MHapq_tl_accr_sf, "label") <- "APQ Short - Timeline Chronic/Acute"
attr(data$MHapq_emo_sf, "label") <- "APQ Short - Emotional Representations"
attr(data$MHapq_ctpve_sf, "label") <- "APQ Short - Control Positive"
attr(data$MHapq_ctnve_sf, "label") <- "APQ Short - Control Negative"
attr(data$MHapq_cqpve_sf, "label") <- "APQ Short - Consequences Positive"
attr(data$MHapq_cqnve_sf, "label") <- "APQ Short - Consequences Negative"

# Drop temporary reverse-scored variables.
data[grep("^recSCQAgePrc", names(data), value = TRUE)] <- NULL

# Match the Stata order command for the six labelled short-form variables.
ordered <- c("MHapq_tl_accr_sf", "MHapq_cqnve_sf", "MHapq_emo_sf",
             "MHapq_ctpve_sf", "MHapq_ctnve_sf", "MHapq_cqpve_sf")
rest <- setdiff(names(data), ordered)
insert_after <- match("MHapq_tl_accr_sf", names(data))
# If the variables already exist, place the six together in the requested order.
data <- data[c(rest[!rest %in% ordered], ordered)]
