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

NEO-PI

NEO-Five Factor Inventory

Measuring: The questionnaire measures the following five domains; Neuroticism, Extraversion, Openness, Agreeableness, and Conscientiousness.

Number of Items: 60

Item Question Wording TILDA Variable
1 I am not a worrier. SCQPers1
2 I like to have a lot of people around me. SCQPers2
3 I enjoy concentrating on a fantasy or a daydream and exploring all its possibilities, letting it grow and develop. SCQPers3
4 I try to be courteous to everyone I meet. SCQPers4
5 I keep my belongings neat and clean. SCQPers5
6 At times I have felt bitter and resentful. SCQPers6
7 I laugh easily. SCQPers7
8 I think it's interesting to learn and develop new hobbies. SCQPers8
9 At times I bully or flatter people into doing what I want them to. SCQPers9
10 I'm pretty good about pacing myself so as to get things done on time. SCQPers10
11 When I'm under a great deal of stress, sometimes I feel like I'm going to pieces. SCQPers11
12 I prefer jobs that let me work alone without being bothered by other people. SCQPers12
13 I am intrigued by patterns I find in art and nature. SCQPers13
14 Some people think I'm selfish and egotistical. SCQPers14
15 I often come into situations without being fully prepared. SCQPers15
16 I rarely feel lonely and blue. SCQPers16
17 I really enjoy talking to people. SCQPers17
18 I believe letting students hear controversial speakers can only confuse and mislead them. SCQPers18
19 If someone starts a fight, I'm ready to fight back. SCQPers19
20 I try to perform all the tasks assigned to me conscientiously. SCQPers20
21 I often feel tense and jittery. SCQPers21
22 I like to be where the action is. SCQPers22
23 Poetry has little or no effect on me. SCQPers23
24 I'm better than most people, and I know it. SCQPers24
25 I have a clear set of goals and work towards them in an orderly fashion. SCQPers25
26 Sometimes I feel completely worthless. SCQPers26
27 I shy away from crowds of people. SCQPers27
28 I would have difficulty just letting my mind wander without control or guidance. SCQPers28
29 When I've been insulted I just try to forgive and forget. SCQPers29
30 I waste a lot of time before settling down to work. SCQPers30
31 I rarely feel fearful or anxious. SCQPers31
32 I often feel as if I'm bursting with energy. SCQPers32
33 I seldom notice the moods or feelings that different environments produce. SCQPers33
34 I tend to assume the best about people. SCQPers34
35 I work hard to accomplish my goals. SCQPers35
36 I often get angry at the way people treat me. SCQPers36
37 I am a cheerful, high spirited person. SCQPers37
38 I experience a wide range of emotions and feelings. SCQPers38
39 Some people think of me as cold and calculating. SCQPers39
40 When I make a commitment, I can always be counted on to follow through. SCQPers40
41 Too often, when things go wrong, I get discouraged and feel like giving up. SCQPers41
42 I don't get much pleasure from chatting with people. SCQPers42
43 Sometimes when I am reading poetry or looking at a work of art, I feel a chill or a wave of excitement. SCQPers43
44 I have no sympathy for beggars. SCQPers44
45 Sometimes I'm not as dependable or reliable as I should be. SCQPers45
46 I am seldom sad and depressed. SCQPers46
47 My life is fast-paced. SCQPers47
48 I have little interest in speculating on the nature of the universe or the human condition. SCQPers48
49 I generally try to be thoughtful and considerate. SCQPers49
50 I am a productive person who always gets the job done. SCQPers50
51 I often feel helpless and want someone else to solve my problems. SCQPers51
52 I am a very active person. SCQPers52
53 I have a lot of intellectual curiosity. SCQPers53
54 If I don't like people I let them know it. SCQPers54
55 I never seem to be able to get organised. SCQPers55
56 At times I have been so ashamed I just want to hide. SCQPers56
57 I would rather go my own way than be a leader of others. SCQPers57
58 I often enjoy playing with theories or abstract ideas. SCQPers58
59 If necessary, I am willing to manipulate people to get what I want. SCQPers59
60 I strive for excellence in everything I do. SCQPers60

Scoring Method:

Yes.

No.

  • Items 9, 12, 14, 15, 18, 19, 23, 24, 27, 30, 33, 39, 42, 44, 45, 48, 54, 55, 57, 59 are reverse scored.

  • There are 5 subscales generate form this scale;

  • Neuroticism (Items 1, 6, 11, 16, 21, 26, 31, 36, 41, 46, 51, 56)

  • Extraversion (Items 2, 7, 12, 17, 22, 27, 32, 37, 42, 47, 52, 57)

  • Openness (Items 3, 8, 13, 18, 23, 28, 33, 38, 43, 48, 53, 58)

  • Agreeableness (Items 4, 9, 14, 19, 24, 29, 34, 39, 44, 49, 54, 59)

  • Conscientiousness (Items 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60)

  • Score are cumulated within each subscale, with higher scores indicating a greater use of that particular personlaity.

Citation: Ewing J. A. (1984). Detecting alcoholism. The CAGE questionnaire. JAMA, 252(14), 1905–1907. https://doi.org/10.1001/jama.252.14.1905

Example TILDA Papers:

  • Cracas, S. V., Kenny, R. A., Scarlett, S., & McCrory, C. (2025). Personality Traits Influence Frailty in Older Adults through Health Behaviours and Psychosocial Resources. The Journals of Gerontology, Series A: Biological Sciences and Medical Sciences, glaf274.

  • O'Maoileidigh, B., McDowell, C., McCrory, C., Kenny, R. A., DeLooze, C., & Ward, M. (2025). Changes in depressive symptoms during the COVID-19 pandemic differ by personality type: Findings from The Irish Longitudinal Study on Ageing. HRB Open Research, 8(42), 42.

  • Nolan, A., McCrory, C., & Moore, P. (2019). Personality and preventive healthcare utilisation: Evidence from the Irish Longitudinal Study on Ageing. Preventive Medicine, 120, 107-112.

  • McDowell, C. P., Wilson, K. E., Monroe, D. C., McCrory, C., Kenny, R. A., & Herring, M. P. (2020). Physical activity partially mediates associations between “Big” personality traits and incident generalized anxiety disorder: Findings from the Irish longitudinal study on ageing. Journal of Affective Disorders, 277, 46-52.

Code

  • Stata
  • R
  • SPSS
*generate a new variable prefixed 'REC' to leave original variables unaltered
foreach var of varlist SCQPers1 - SCQPers60{
generate Rec`var' =`var'
}

*COUNT THE TOTAL NUMBER OF MISSING ITEMS ON THE NEO-FFI-3
gen missingPersTot=0
foreach var of varlist RecSCQPers1 - RecSCQPers60{
replace missingPersTot = missingPersTot+1 if `var'==-1 | `var'==-99 | `var'==-812 | `var'==-823 | `var'==-834 | `var'==-845
}
label variable missingPersTot "Total number of missing responses on the NEO-FFI-3 (range 0-60)"
tab missingPersTot


*count total number of missing items on neurotism dimension (used for imputing below)   
gen missing_Neurotic=0
foreach var of varlist RecSCQPers1 RecSCQPers6 RecSCQPers11 RecSCQPers16 RecSCQPers21 /// 
RecSCQPers26 RecSCQPers31 RecSCQPers36 RecSCQPers41 RecSCQPers46 RecSCQPers51 RecSCQPers56{
replace missing_Neurotic = missing_Neurotic+1 if `var'==-1 | `var'==-99 | `var'==-812 | `var'==-823 | `var'==-834 | `var'==-845
}
tab missing_Neurotic

*count total number of missing items on extraversion dimension (used for imputing below)    
gen missing_Extrav=0
foreach var of varlist RecSCQPers2 RecSCQPers7 RecSCQPers12 RecSCQPers17 RecSCQPers22 /// 
RecSCQPers27 RecSCQPers32 RecSCQPers37 RecSCQPers42 RecSCQPers47 RecSCQPers52 RecSCQPers57{
replace missing_Extrav = missing_Extrav+1 if `var'==-1 |`var'==-99 | `var'==-812 | `var'==-823 | `var'==-834 | `var'==-845
}
tab missing_Extrav

*count total number of missing items on openness dimension  (used for imputing below)
gen missing_Openness=0
foreach var of varlist RecSCQPers3 RecSCQPers8 RecSCQPers13 RecSCQPers18 RecSCQPers23 /// 
RecSCQPers28 RecSCQPers33 RecSCQPers38 RecSCQPers43 RecSCQPers48 RecSCQPers53 RecSCQPers58{
replace missing_Openness = missing_Openness+1 if `var'==-1 | `var'==-99 | `var'==-812 | `var'==-823 | `var'==-834 | `var'==-845
}
tab missing_Openness

*count total number of missing items on agreeableness dimension (used for imputing below)
gen missing_Agreeable=0
foreach var of varlist RecSCQPers4 RecSCQPers9 RecSCQPers14 RecSCQPers19 RecSCQPers24 /// 
RecSCQPers29 RecSCQPers34 RecSCQPers39 RecSCQPers44 RecSCQPers49 RecSCQPers54 RecSCQPers59{
replace missing_Agreeable = missing_Agreeable+1 if `var'==-1 | `var'==-99 | `var'==-812 | `var'==-823 | `var'==-834 | `var'==-845
}
tab missing_Agreeable

*count total number of missing items on conscientiousness dimension (used for imputing below)   
gen missing_Conscient=0
foreach var of varlist RecSCQPers5 RecSCQPers10 RecSCQPers15 RecSCQPers20 RecSCQPers25 /// 
RecSCQPers30 RecSCQPers35 RecSCQPers40 RecSCQPers45 RecSCQPers50 RecSCQPers55 RecSCQPers60{
replace missing_Conscient = missing_Conscient+1 if `var'==-1 |`var'==-99 | `var'==-812 | `var'==-823 | `var'==-834 | `var'==-845
}
tab missing_Conscient

*THE NEO-PI IS SCORED FROM 0-4 RATHER THAN 1 TO 5 AS PER TILDA QUESTIONNAIRE.
notes: The scoring key should run 0-4 NOT 1-5 as per the questionaire
foreach var of varlist RecSCQPers1 - RecSCQPers60{
recode `var' (1=0) (2=1) (3=2) (4=3) (5=4) (-99=.) (-1=.) (-812 -823 -834 -845=.)
}

*RECODE REVERSE SCORED ITEMS
notes: Please note TILDA anchored the poles opposite to the way in which the NEO-FFI-3 is meant to be scored. 
notes: This means you need to reverse score the supposed non-reverse scored items.
foreach var of varlist RecSCQPers2 RecSCQPers3 RecSCQPers4 RecSCQPers5 RecSCQPers6 RecSCQPers7 RecSCQPers8 /// 
RecSCQPers10 RecSCQPers11 RecSCQPers13 RecSCQPers17 RecSCQPers20 RecSCQPers21 RecSCQPers22 RecSCQPers25 /// 
    RecSCQPers26 RecSCQPers29 RecSCQPers32 RecSCQPers34 RecSCQPers35 RecSCQPers36 RecSCQPers37 RecSCQPers38 /// 
    RecSCQPers40 RecSCQPers41 RecSCQPers43 RecSCQPers47 RecSCQPers49 RecSCQPers50 RecSCQPers51 /// 
    RecSCQPers52 RecSCQPers53 RecSCQPers56 RecSCQPers58 RecSCQPers60{
recode `var' (0=4) (1=3) (2=2) (3=1) (4=0)
}

*Calculate scores for the dimensions and inpute "neutral response" for each missing item if /// 
*extent of missingness on any dimension is less than 4 items. Do not calculate a scale score 
*if respondent is missing 10 or more items on the personality inventory.

*Neuroticism
gen NEOFFI_Neuroticism = (RecSCQPers1+ RecSCQPers6+ RecSCQPers11+ RecSCQPers16+ RecSCQPers21+ RecSCQPers26+ /// 
RecSCQPers31+ RecSCQPers36+ RecSCQPers41+ RecSCQPers46+ RecSCQPers51+ RecSCQPers56)
foreach var of varlist RecSCQPers1 RecSCQPers6 RecSCQPers11 RecSCQPers16 RecSCQPers21 RecSCQPers26 ///
RecSCQPers31 RecSCQPers36 RecSCQPers41 RecSCQPers46 RecSCQPers51 RecSCQPers56 {
     replace `var'=2 if missing(`var') & inrange(missing_Neurotic, 1, 4)
}
replace NEOFFI_Neuroticism = (RecSCQPers1+ RecSCQPers6+ RecSCQPers11+ RecSCQPers16+ RecSCQPers21+ RecSCQPers26+ /// 
RecSCQPers31+ RecSCQPers36+ RecSCQPers41+ RecSCQPers46+ RecSCQPers51+ RecSCQPers56) /// 
if inrange(missing_Neurotic, 1, 4)
replace NEOFFI_Neuroticism=. if !missing(NEOFFI_Neuroticism) & missingPersTot>=10
label variable NEOFFI_Neuroticism "NEO-FFI-3 - Neuroticism Score (range = 0-48)"
summarize NEOFFI_Neuroticism, d

*Extraversion
gen NEOFFI_Extraversion = (RecSCQPers2+ RecSCQPers7+ RecSCQPers12+ RecSCQPers17+ RecSCQPers22+ RecSCQPers27+ /// 
RecSCQPers32+ RecSCQPers37+ RecSCQPers42+ RecSCQPers47+ RecSCQPers52+ RecSCQPers57)
foreach var of varlist RecSCQPers2 RecSCQPers7 RecSCQPers12 RecSCQPers17 RecSCQPers22 RecSCQPers27 /// 
RecSCQPers32 RecSCQPers37 RecSCQPers42 RecSCQPers47 RecSCQPers52 RecSCQPers57 {
     replace `var'=2 if missing(`var') & inrange(missing_Extrav, 1, 4)
}
replace NEOFFI_Extraversion = (RecSCQPers2+ RecSCQPers7+ RecSCQPers12+ RecSCQPers17+ RecSCQPers22+ RecSCQPers27+ /// 
RecSCQPers32+ RecSCQPers37+ RecSCQPers42+ RecSCQPers47+ RecSCQPers52+ RecSCQPers57) /// 
if inrange(missing_Extrav, 1, 4)
replace NEOFFI_Extraversion=. if !missing(NEOFFI_Extraversion) & missingPersTot>=10
label variable NEOFFI_Extraversion "NEO-FFI-3 - Extraversion Score (range = 0-48)"
summarize NEOFFI_Extraversion, d

*Openness
gen NEOFFI_Openness = (RecSCQPers3+ RecSCQPers8+ RecSCQPers13+ RecSCQPers18+ RecSCQPers23+ RecSCQPers28+ /// 
RecSCQPers33+ RecSCQPers38+ RecSCQPers43+ RecSCQPers48+ RecSCQPers53+ RecSCQPers58)
foreach var of varlist RecSCQPers3 RecSCQPers8 RecSCQPers13 RecSCQPers18 RecSCQPers23 RecSCQPers28 /// 
RecSCQPers33 RecSCQPers38 RecSCQPers43 RecSCQPers48 RecSCQPers53 RecSCQPers58 {
     replace `var'=2 if missing(`var') & inrange(missing_Openness, 1, 4)
}
replace NEOFFI_Openness = (RecSCQPers3+ RecSCQPers8+ RecSCQPers13+ RecSCQPers18+ RecSCQPers23+ RecSCQPers28+ /// 
RecSCQPers33+ RecSCQPers38+ RecSCQPers43+ RecSCQPers48+ RecSCQPers53+ RecSCQPers58) /// 
if inrange(missing_Openness, 1, 4)
replace NEOFFI_Openness=. if !missing(NEOFFI_Openness) & missingPersTot>=10
label variable NEOFFI_Openness "NEO-FFI-3 - Openness to Experience Score (range = 0-48)"
summarize NEOFFI_Openness, d

*Agreeableness
gen NEOFFI_Agreeableness = (RecSCQPers4+ RecSCQPers9+ RecSCQPers14+ RecSCQPers19+ RecSCQPers24+ RecSCQPers29+ /// 
RecSCQPers34+ RecSCQPers39+ RecSCQPers44+ RecSCQPers49+ RecSCQPers54+ RecSCQPers59)
foreach var of varlist RecSCQPers4 RecSCQPers9 RecSCQPers14 RecSCQPers19 RecSCQPers24 RecSCQPers29 /// 
RecSCQPers34 RecSCQPers39 RecSCQPers44 RecSCQPers49 RecSCQPers54 RecSCQPers59 {
     replace `var'=2 if missing(`var') & inrange(missing_Agreeable, 1, 4) & missingPersTot<10
}
replace NEOFFI_Agreeableness = (RecSCQPers4+ RecSCQPers9+ RecSCQPers14+ RecSCQPers19+ RecSCQPers24+ RecSCQPers29+ /// 
RecSCQPers34+ RecSCQPers39+ RecSCQPers44+ RecSCQPers49+ RecSCQPers54+ RecSCQPers59) /// 
if inrange(missing_Agreeable, 1, 4)
replace NEOFFI_Agreeableness=. if !missing(NEOFFI_Agreeableness) & missingPersTot>=10
label variable NEOFFI_Agreeableness "NEO-FFI-3 - Agreeableness Score (range = 0-48)"
summarize NEOFFI_Agreeableness, d

*Conscientiousness
gen NEOFFI_Conscientiousness = (RecSCQPers5+ RecSCQPers10+ RecSCQPers15+ RecSCQPers20+ RecSCQPers25+ RecSCQPers30+ /// 
RecSCQPers35+ RecSCQPers40+ RecSCQPers45+ RecSCQPers50+ RecSCQPers55+ RecSCQPers60)
foreach var of varlist RecSCQPers5 RecSCQPers10 RecSCQPers15 RecSCQPers20 RecSCQPers25 RecSCQPers30 /// 
RecSCQPers35 RecSCQPers40 RecSCQPers45 RecSCQPers50 RecSCQPers55 RecSCQPers60 {
     replace `var'=2 if missing(`var') & inrange(missing_Conscient, 1, 4) & missingPersTot<10
}
replace NEOFFI_Conscientiousness = (RecSCQPers5+ RecSCQPers10+ RecSCQPers15+ RecSCQPers20+ RecSCQPers25+ /// 
RecSCQPers30+ RecSCQPers35+ RecSCQPers40+ RecSCQPers45+ RecSCQPers50+ RecSCQPers55+ RecSCQPers60) /// 
if inrange(missing_Conscient, 1, 4)
replace NEOFFI_Conscientiousness=. if !missing(NEOFFI_Conscientiousness) & missingPersTot>=10
label variable NEOFFI_Conscientiousness "NEO-FFI-3 - Conscientiousness Score (range = 0-48)"
summarize NEOFFI_Conscientiousness, d


*GET SUMMARY SCORES FOR THE VARIABLES
summarize NEOFFI_Neuroticism NEOFFI_Extraversion NEOFFI_Openness NEOFFI_Agreeableness NEOFFI_Conscientiousness

egen zNEOFFI_Neuroticism = std(NEOFFI_Neuroticism)
label variable zNEOFFI_Neuroticism "Standardised scores on the NEO-FFI-3 Neuroticism dimension"

egen zNEOFFI_Extraversion = std(NEOFFI_Extraversion)
label variable zNEOFFI_Extraversion "Standardised scores on the NEO-FFI-3 Extraversion dimension"

egen zNEOFFI_Openness = std(NEOFFI_Openness)
label variable zNEOFFI_Openness "Standardised scores on the NEO-FFI-3 Openness dimension"

egen zNEOFFI_Agreeableness = std(NEOFFI_Agreeableness)
label variable zNEOFFI_Agreeableness "Standardised scores on the NEO-FFI-3 Agreeableness dimension"

egen zNEOFFI_Conscientiousness = std(NEOFFI_Conscientiousness)
label variable zNEOFFI_Conscientiousness "Standardised scores on the NEO-FFI-3 Conscientiousness dimension"


*GENERATE PROFILE SCORES FOR THE NEO-FFI-3 SCALE SCORES BASED ON ITEM BOOKLET SCORING*

gen NEOFFI_Neuroticism_profile = .
replace NEOFFI_Neuroticism_profile = 1 if inrange(NEOFFI_Neuroticism, 0, 8)
replace NEOFFI_Neuroticism_profile = 2 if inrange(NEOFFI_Neuroticism, 9, 16)
replace NEOFFI_Neuroticism_profile = 3 if inrange(NEOFFI_Neuroticism, 17, 25)
replace NEOFFI_Neuroticism_profile = 4 if inrange(NEOFFI_Neuroticism, 26, 32)
replace NEOFFI_Neuroticism_profile = 5 if inrange(NEOFFI_Neuroticism, 33, 48)
label variable NEOFFI_Neuroticism_profile "Profile score on the NEO-FFI-3 NEUROTICISM dimension"
label define NEOFFI_Neuroticism_profile 1"Very low" 2"Low" 3"Average" 4"High" 5"Very High"
label values NEOFFI_Neuroticism_profile NEOFFI_Neuroticism_profile
summarize NEOFFI_Neuroticism NEOFFI_Neuroticism_profile

gen NEOFFI_Extraversion_profile = .
replace NEOFFI_Extraversion_profile = 1 if inrange(NEOFFI_Extraversion, 0, 18)
replace NEOFFI_Extraversion_profile = 2 if inrange(NEOFFI_Extraversion, 19, 24)
replace NEOFFI_Extraversion_profile = 3 if inrange(NEOFFI_Extraversion, 25, 31)
replace NEOFFI_Extraversion_profile = 4 if inrange(NEOFFI_Extraversion, 32, 37)
replace NEOFFI_Extraversion_profile = 5 if inrange(NEOFFI_Extraversion, 38, 48)
label variable NEOFFI_Extraversion_profile "Profile score on the NEO-FFI-3 EXTRAVERSION dimension"
label define NEOFFI_Extraversion_profile 1"Very low" 2"Low" 3"Average" 4"High" 5"Very High"
label values NEOFFI_Extraversion_profile NEOFFI_Extraversion_profile

gen NEOFFI_Openness_profile = .
replace NEOFFI_Openness_profile = 1 if inrange(NEOFFI_Openness, 0, 18)
replace NEOFFI_Openness_profile = 2 if inrange(NEOFFI_Openness, 19, 24)
replace NEOFFI_Openness_profile = 3 if inrange(NEOFFI_Openness, 25, 31)
replace NEOFFI_Openness_profile = 4 if inrange(NEOFFI_Openness, 32, 38)
replace NEOFFI_Openness_profile = 5 if inrange(NEOFFI_Openness, 39, 48)
label variable NEOFFI_Openness_profile "Profile score on the NEO-FFI-3 OPENNESS dimension"
label define NEOFFI_Openness_profile 1"Very low" 2"Low" 3"Average" 4"High" 5"Very High"
label values NEOFFI_Openness_profile NEOFFI_Openness_profile

gen NEOFFI_Agreeableness_profile = .
replace NEOFFI_Agreeableness_profile = 1 if inrange(NEOFFI_Agreeableness, 0, 22)
replace NEOFFI_Agreeableness_profile = 2 if inrange(NEOFFI_Agreeableness, 23, 28)
replace NEOFFI_Agreeableness_profile = 3 if inrange(NEOFFI_Agreeableness, 29, 35)
replace NEOFFI_Agreeableness_profile = 4 if inrange(NEOFFI_Agreeableness, 36, 41)
replace NEOFFI_Agreeableness_profile = 5 if inrange(NEOFFI_Agreeableness, 42, 48)
label variable NEOFFI_Agreeableness_profile "Profile score on the NEO-FFI-3 AGREEABLENESS dimension"
label define NEOFFI_Agreeableness_profile 1"Very low" 2"Low" 3"Average" 4"High" 5"Very High"
label values NEOFFI_Agreeableness_profile NEOFFI_Agreeableness_profile

gen NEOFFI_Conscientiousness_profile = .
replace NEOFFI_Conscientiousness_profile = 1 if inrange(NEOFFI_Conscientiousness, 0, 22)
replace NEOFFI_Conscientiousness_profile = 2 if inrange(NEOFFI_Conscientiousness, 23, 28)
replace NEOFFI_Conscientiousness_profile = 3 if inrange(NEOFFI_Conscientiousness, 29, 35)
replace NEOFFI_Conscientiousness_profile = 4 if inrange(NEOFFI_Conscientiousness, 36, 41)
replace NEOFFI_Conscientiousness_profile = 5 if inrange(NEOFFI_Conscientiousness, 42, 48)
label variable NEOFFI_Conscientiousness_profile "Profile score on the NEO-FFI-3 CONSCIENTIOUSNESS dimension"
label define NEOFFI_Conscientiousness_profile 1"Very low" 2"Low" 3"Average" 4"High" 5"Very High"
label values NEOFFI_Conscientiousness_profile NEOFFI_Conscientiousness_profile

Download Stata .do file

# Create RecSCQPers1-RecSCQPers60 copies.
pers_items <- paste0("SCQPers", 1:60)
rec_items <- paste0("RecSCQPers", 1:60)
for (i in seq_along(pers_items)) {
  data[[rec_items[i]]] <- data[[pers_items[i]]]
}

missing_codes <- c(-1, -99, -812, -823, -834, -845)

# Total number of missing responses before recoding.
data$missingPersTot <- rowSums(
  sapply(rec_items, function(v) data[[v]] %in% missing_codes)
)
attr(data$missingPersTot, "label") <-
  "Total number of missing responses on the NEO-FFI-3 (range 0-60)"
print(table(data$missingPersTot, useNA = "ifany"))

dims <- list(
  Neurotic = c(1,6,11,16,21,26,31,36,41,46,51,56),
  Extrav = c(2,7,12,17,22,27,32,37,42,47,52,57),
  Openness = c(3,8,13,18,23,28,33,38,43,48,53,58),
  Agreeable = c(4,9,14,19,24,29,34,39,44,49,54,59),
  Conscient = c(5,10,15,20,25,30,35,40,45,50,55,60)
)

for (nm in names(dims)) {
  vars <- paste0("RecSCQPers", dims[[nm]])
  out <- paste0("missing_", nm)
  data[[out]] <- rowSums(sapply(vars, function(v) data[[v]] %in% missing_codes))
  print(table(data[[out]], useNA = "ifany"))
}

# Recode source 1-5 scoring to 0-4; special codes become missing.
for (v in rec_items) {
  x <- data[[v]]
  x[x %in% missing_codes] <- NA_real_
  x[!is.na(x)] <- x[!is.na(x)] - 1
  data[[v]] <- x
}

# TILDA anchored the poles opposite to the NEO-FFI-3 scoring direction
# for these items, so the source reverse-scores them after the 0-4 recode.
reverse_items <- c(
  2,3,4,5,6,7,8,10,11,13,17,20,21,22,25,26,29,32,34,35,36,37,
  38,40,41,43,47,49,50,51,52,53,56,58,60
)
for (i in reverse_items) {
  v <- paste0("RecSCQPers", i)
  data[[v]] <- 4 - data[[v]]
}

score_dimension <- function(data, out, item_numbers, missing_var,
                            restrict_imputation_by_total = FALSE) {
  vars <- paste0("RecSCQPers", item_numbers)

  # Initial ordinary sum.
  data[[out]] <- rowSums(data[vars], na.rm = FALSE)

  # Impute neutral response (2) when 1-4 dimension items are missing.
  eligible <- !is.na(data[[missing_var]]) &
              data[[missing_var]] >= 1 & data[[missing_var]] <= 4
  if (restrict_imputation_by_total) {
    eligible <- eligible & !is.na(data$missingPersTot) & data$missingPersTot < 10
  }

  for (v in vars) {
    data[[v]][eligible & is.na(data[[v]])] <- 2
  }

  # Source recomputes for everyone with 1-4 missing dimension items.
  recompute <- !is.na(data[[missing_var]]) &
               data[[missing_var]] >= 1 & data[[missing_var]] <= 4
  tmp <- rowSums(data[vars], na.rm = FALSE)
  data[[out]][recompute] <- tmp[recompute]

  # Do not retain a nonmissing score when 10+ total personality items are missing.
  data[[out]][!is.na(data[[out]]) &
              !is.na(data$missingPersTot) &
              data$missingPersTot >= 10] <- NA_real_

  data
}

data <- score_dimension(
  data, "NEOFFI_Neuroticism",
  c(1,6,11,16,21,26,31,36,41,46,51,56),
  "missing_Neurotic", FALSE
)
attr(data$NEOFFI_Neuroticism, "label") <-
  "NEO-FFI-3 - Neuroticism Score (range = 0-48)"

data <- score_dimension(
  data, "NEOFFI_Extraversion",
  c(2,7,12,17,22,27,32,37,42,47,52,57),
  "missing_Extrav", FALSE
)
attr(data$NEOFFI_Extraversion, "label") <-
  "NEO-FFI-3 - Extraversion Score (range = 0-48)"

data <- score_dimension(
  data, "NEOFFI_Openness",
  c(3,8,13,18,23,28,33,38,43,48,53,58),
  "missing_Openness", FALSE
)
attr(data$NEOFFI_Openness, "label") <-
  "NEO-FFI-3 - Openness to Experience Score (range = 0-48)"

data <- score_dimension(
  data, "NEOFFI_Agreeableness",
  c(4,9,14,19,24,29,34,39,44,49,54,59),
  "missing_Agreeable", TRUE
)
attr(data$NEOFFI_Agreeableness, "label") <-
  "NEO-FFI-3 - Agreeableness Score (range = 0-48)"

data <- score_dimension(
  data, "NEOFFI_Conscientiousness",
  c(5,10,15,20,25,30,35,40,45,50,55,60),
  "missing_Conscient", TRUE
)
attr(data$NEOFFI_Conscientiousness, "label") <-
  "NEO-FFI-3 - Conscientiousness Score (range = 0-48)"

# Standardised scores. R's sd() uses the sample SD, matching Stata egen std().
zscore <- function(x) {
  (x - mean(x, na.rm = TRUE)) / sd(x, na.rm = TRUE)
}

data$zNEOFFI_Neuroticism <- zscore(data$NEOFFI_Neuroticism)
data$zNEOFFI_Extraversion <- zscore(data$NEOFFI_Extraversion)
data$zNEOFFI_Openness <- zscore(data$NEOFFI_Openness)
data$zNEOFFI_Agreeableness <- zscore(data$NEOFFI_Agreeableness)
data$zNEOFFI_Conscientiousness <- zscore(data$NEOFFI_Conscientiousness)

attr(data$zNEOFFI_Neuroticism, "label") <-
  "Standardised scores on the NEO-FFI-3 Neuroticism dimension"
attr(data$zNEOFFI_Extraversion, "label") <-
  "Standardised scores on the NEO-FFI-3 Extraversion dimension"
attr(data$zNEOFFI_Openness, "label") <-
  "Standardised scores on the NEO-FFI-3 Openness dimension"
attr(data$zNEOFFI_Agreeableness, "label") <-
  "Standardised scores on the NEO-FFI-3 Agreeableness dimension"
attr(data$zNEOFFI_Conscientiousness, "label") <-
  "Standardised scores on the NEO-FFI-3 Conscientiousness dimension"

profile_score <- function(x, cuts) {
  out <- rep(NA_real_, length(x))
  out[!is.na(x) & x >= cuts[1] & x <= cuts[2]] <- 1
  out[!is.na(x) & x >= cuts[3] & x <= cuts[4]] <- 2
  out[!is.na(x) & x >= cuts[5] & x <= cuts[6]] <- 3
  out[!is.na(x) & x >= cuts[7] & x <= cuts[8]] <- 4
  out[!is.na(x) & x >= cuts[9] & x <= cuts[10]] <- 5
  out
}

data$NEOFFI_Neuroticism_profile <- profile_score(
  data$NEOFFI_Neuroticism, c(0,8, 9,16, 17,25, 26,32, 33,48))
data$NEOFFI_Extraversion_profile <- profile_score(
  data$NEOFFI_Extraversion, c(0,18, 19,24, 25,31, 32,37, 38,48))
data$NEOFFI_Openness_profile <- profile_score(
  data$NEOFFI_Openness, c(0,18, 19,24, 25,31, 32,38, 39,48))
data$NEOFFI_Agreeableness_profile <- profile_score(
  data$NEOFFI_Agreeableness, c(0,22, 23,28, 29,35, 36,41, 42,48))
data$NEOFFI_Conscientiousness_profile <- profile_score(
  data$NEOFFI_Conscientiousness, c(0,22, 23,28, 29,35, 36,41, 42,48))

profile_labels <- c(
  "Very low" = 1, "Low" = 2, "Average" = 3, "High" = 4, "Very High" = 5
)

for (v in c("NEOFFI_Neuroticism_profile", "NEOFFI_Extraversion_profile",
            "NEOFFI_Openness_profile", "NEOFFI_Agreeableness_profile",
            "NEOFFI_Conscientiousness_profile")) {
  attr(data[[v]], "labels") <- profile_labels
}

attr(data$NEOFFI_Neuroticism_profile, "label") <-
  "Profile score on the NEO-FFI-3 NEUROTICISM dimension"
attr(data$NEOFFI_Extraversion_profile, "label") <-
  "Profile score on the NEO-FFI-3 EXTRAVERSION dimension"
attr(data$NEOFFI_Openness_profile, "label") <-
  "Profile score on the NEO-FFI-3 OPENNESS dimension"
attr(data$NEOFFI_Agreeableness_profile, "label") <-
  "Profile score on the NEO-FFI-3 AGREEABLENESS dimension"
attr(data$NEOFFI_Conscientiousness_profile, "label") <-
  "Profile score on the NEO-FFI-3 CONSCIENTIOUSNESS dimension"

summary(data[c(
  "NEOFFI_Neuroticism", "NEOFFI_Extraversion", "NEOFFI_Openness",
  "NEOFFI_Agreeableness", "NEOFFI_Conscientiousness"
)])

Download R file

* Create RecSCQPers1-RecSCQPers60 copies.
DO REPEAT src = SCQPers1 SCQPers2 SCQPers3 SCQPers4 SCQPers5 SCQPers6 SCQPers7 SCQPers8 SCQPers9 SCQPers10 SCQPers11 SCQPers12 SCQPers13 SCQPers14 SCQPers15 SCQPers16 SCQPers17 SCQPers18 SCQPers19 SCQPers20 SCQPers21 SCQPers22 SCQPers23 SCQPers24 SCQPers25 SCQPers26 SCQPers27 SCQPers28 SCQPers29 SCQPers30 SCQPers31 SCQPers32 SCQPers33 SCQPers34 SCQPers35 SCQPers36 SCQPers37 SCQPers38 SCQPers39 SCQPers40 SCQPers41 SCQPers42 SCQPers43 SCQPers44 SCQPers45 SCQPers46 SCQPers47 SCQPers48 SCQPers49 SCQPers50 SCQPers51 SCQPers52 SCQPers53 SCQPers54 SCQPers55 SCQPers56 SCQPers57 SCQPers58 SCQPers59 SCQPers60
 /dst = RecSCQPers1 RecSCQPers2 RecSCQPers3 RecSCQPers4 RecSCQPers5 RecSCQPers6 RecSCQPers7 RecSCQPers8 RecSCQPers9 RecSCQPers10 RecSCQPers11 RecSCQPers12 RecSCQPers13 RecSCQPers14 RecSCQPers15 RecSCQPers16 RecSCQPers17 RecSCQPers18 RecSCQPers19 RecSCQPers20 RecSCQPers21 RecSCQPers22 RecSCQPers23 RecSCQPers24 RecSCQPers25 RecSCQPers26 RecSCQPers27 RecSCQPers28 RecSCQPers29 RecSCQPers30 RecSCQPers31 RecSCQPers32 RecSCQPers33 RecSCQPers34 RecSCQPers35 RecSCQPers36 RecSCQPers37 RecSCQPers38 RecSCQPers39 RecSCQPers40 RecSCQPers41 RecSCQPers42 RecSCQPers43 RecSCQPers44 RecSCQPers45 RecSCQPers46 RecSCQPers47 RecSCQPers48 RecSCQPers49 RecSCQPers50 RecSCQPers51 RecSCQPers52 RecSCQPers53 RecSCQPers54 RecSCQPers55 RecSCQPers56 RecSCQPers57 RecSCQPers58 RecSCQPers59 RecSCQPers60.
  COMPUTE dst = src.
END REPEAT.

COUNT missingPersTot = RecSCQPers1 RecSCQPers2 RecSCQPers3 RecSCQPers4 RecSCQPers5 RecSCQPers6 RecSCQPers7 RecSCQPers8 RecSCQPers9 RecSCQPers10 RecSCQPers11 RecSCQPers12 RecSCQPers13 RecSCQPers14 RecSCQPers15 RecSCQPers16 RecSCQPers17 RecSCQPers18 RecSCQPers19 RecSCQPers20 RecSCQPers21 RecSCQPers22 RecSCQPers23 RecSCQPers24 RecSCQPers25 RecSCQPers26 RecSCQPers27 RecSCQPers28 RecSCQPers29 RecSCQPers30 RecSCQPers31 RecSCQPers32 RecSCQPers33 RecSCQPers34 RecSCQPers35 RecSCQPers36 RecSCQPers37 RecSCQPers38 RecSCQPers39 RecSCQPers40 RecSCQPers41 RecSCQPers42 RecSCQPers43 RecSCQPers44 RecSCQPers45 RecSCQPers46 RecSCQPers47 RecSCQPers48 RecSCQPers49 RecSCQPers50 RecSCQPers51 RecSCQPers52 RecSCQPers53 RecSCQPers54 RecSCQPers55 RecSCQPers56 RecSCQPers57 RecSCQPers58 RecSCQPers59 RecSCQPers60
  (-1, -99, -812, -823, -834, -845).
VARIABLE LABELS missingPersTot
  "Total number of missing responses on the NEO-FFI-3 (range 0-60)".
FREQUENCIES VARIABLES=missingPersTot.

COUNT missing_Neurotic = RecSCQPers1 RecSCQPers6 RecSCQPers11 RecSCQPers16 RecSCQPers21 RecSCQPers26 RecSCQPers31 RecSCQPers36 RecSCQPers41 RecSCQPers46 RecSCQPers51 RecSCQPers56
  (-1, -99, -812, -823, -834, -845).
COUNT missing_Extrav = RecSCQPers2 RecSCQPers7 RecSCQPers12 RecSCQPers17 RecSCQPers22 RecSCQPers27 RecSCQPers32 RecSCQPers37 RecSCQPers42 RecSCQPers47 RecSCQPers52 RecSCQPers57
  (-1, -99, -812, -823, -834, -845).
COUNT missing_Openness = RecSCQPers3 RecSCQPers8 RecSCQPers13 RecSCQPers18 RecSCQPers23 RecSCQPers28 RecSCQPers33 RecSCQPers38 RecSCQPers43 RecSCQPers48 RecSCQPers53 RecSCQPers58
  (-1, -99, -812, -823, -834, -845).
COUNT missing_Agreeable = RecSCQPers4 RecSCQPers9 RecSCQPers14 RecSCQPers19 RecSCQPers24 RecSCQPers29 RecSCQPers34 RecSCQPers39 RecSCQPers44 RecSCQPers49 RecSCQPers54 RecSCQPers59
  (-1, -99, -812, -823, -834, -845).
COUNT missing_Conscient = RecSCQPers5 RecSCQPers10 RecSCQPers15 RecSCQPers20 RecSCQPers25 RecSCQPers30 RecSCQPers35 RecSCQPers40 RecSCQPers45 RecSCQPers50 RecSCQPers55 RecSCQPers60
  (-1, -99, -812, -823, -834, -845).

FREQUENCIES VARIABLES=
  missing_Neurotic missing_Extrav missing_Openness
  missing_Agreeable missing_Conscient.

* Recode 1-5 to 0-4; special missing values to system missing.
RECODE RecSCQPers1 RecSCQPers2 RecSCQPers3 RecSCQPers4 RecSCQPers5 RecSCQPers6 RecSCQPers7 RecSCQPers8 RecSCQPers9 RecSCQPers10 RecSCQPers11 RecSCQPers12 RecSCQPers13 RecSCQPers14 RecSCQPers15 RecSCQPers16 RecSCQPers17 RecSCQPers18 RecSCQPers19 RecSCQPers20 RecSCQPers21 RecSCQPers22 RecSCQPers23 RecSCQPers24 RecSCQPers25 RecSCQPers26 RecSCQPers27 RecSCQPers28 RecSCQPers29 RecSCQPers30 RecSCQPers31 RecSCQPers32 RecSCQPers33 RecSCQPers34 RecSCQPers35 RecSCQPers36 RecSCQPers37 RecSCQPers38 RecSCQPers39 RecSCQPers40 RecSCQPers41 RecSCQPers42 RecSCQPers43 RecSCQPers44 RecSCQPers45 RecSCQPers46 RecSCQPers47 RecSCQPers48 RecSCQPers49 RecSCQPers50 RecSCQPers51 RecSCQPers52 RecSCQPers53 RecSCQPers54 RecSCQPers55 RecSCQPers56 RecSCQPers57 RecSCQPers58 RecSCQPers59 RecSCQPers60
  (1=0) (2=1) (3=2) (4=3) (5=4)
  (-99=SYSMIS) (-1=SYSMIS) (-812=SYSMIS) (-823=SYSMIS)
  (-834=SYSMIS) (-845=SYSMIS).

* Reverse-scored items specified in the Stata source.
RECODE RecSCQPers2 RecSCQPers3 RecSCQPers4 RecSCQPers5 RecSCQPers6 RecSCQPers7 RecSCQPers8 RecSCQPers10 RecSCQPers11 RecSCQPers13 RecSCQPers17 RecSCQPers20 RecSCQPers21 RecSCQPers22 RecSCQPers25 RecSCQPers26 RecSCQPers29 RecSCQPers32 RecSCQPers34 RecSCQPers35 RecSCQPers36 RecSCQPers37 RecSCQPers38 RecSCQPers40 RecSCQPers41 RecSCQPers43 RecSCQPers47 RecSCQPers49 RecSCQPers50 RecSCQPers51 RecSCQPers52 RecSCQPers53 RecSCQPers56 RecSCQPers58 RecSCQPers60
  (0=4) (1=3) (2=2) (3=1) (4=0).

* Neuroticism.
COMPUTE NEOFFI_Neuroticism =
  RecSCQPers1 + RecSCQPers6 + RecSCQPers11 + RecSCQPers16 + RecSCQPers21 + RecSCQPers26 + RecSCQPers31 + RecSCQPers36 + RecSCQPers41 + RecSCQPers46 + RecSCQPers51 + RecSCQPers56.
DO REPEAT v = RecSCQPers1 RecSCQPers6 RecSCQPers11 RecSCQPers16 RecSCQPers21 RecSCQPers26 RecSCQPers31 RecSCQPers36 RecSCQPers41 RecSCQPers46 RecSCQPers51 RecSCQPers56.
  IF (MISSING(v) AND missing_Neurotic >= 1 AND missing_Neurotic <= 4) v = 2.
END REPEAT.
IF (missing_Neurotic >= 1 AND missing_Neurotic <= 4)
  NEOFFI_Neuroticism =
  RecSCQPers1 + RecSCQPers6 + RecSCQPers11 + RecSCQPers16 + RecSCQPers21 + RecSCQPers26 + RecSCQPers31 + RecSCQPers36 + RecSCQPers41 + RecSCQPers46 + RecSCQPers51 + RecSCQPers56.
IF (NOT MISSING(NEOFFI_Neuroticism) AND missingPersTot >= 10)
  NEOFFI_Neuroticism = $SYSMIS.
VARIABLE LABELS NEOFFI_Neuroticism
  "NEO-FFI-3 - Neuroticism Score (range = 0-48)".

* Extraversion.
COMPUTE NEOFFI_Extraversion =
  RecSCQPers2 + RecSCQPers7 + RecSCQPers12 + RecSCQPers17 + RecSCQPers22 + RecSCQPers27 + RecSCQPers32 + RecSCQPers37 + RecSCQPers42 + RecSCQPers47 + RecSCQPers52 + RecSCQPers57.
DO REPEAT v = RecSCQPers2 RecSCQPers7 RecSCQPers12 RecSCQPers17 RecSCQPers22 RecSCQPers27 RecSCQPers32 RecSCQPers37 RecSCQPers42 RecSCQPers47 RecSCQPers52 RecSCQPers57.
  IF (MISSING(v) AND missing_Extrav >= 1 AND missing_Extrav <= 4) v = 2.
END REPEAT.
IF (missing_Extrav >= 1 AND missing_Extrav <= 4)
  NEOFFI_Extraversion =
  RecSCQPers2 + RecSCQPers7 + RecSCQPers12 + RecSCQPers17 + RecSCQPers22 + RecSCQPers27 + RecSCQPers32 + RecSCQPers37 + RecSCQPers42 + RecSCQPers47 + RecSCQPers52 + RecSCQPers57.
IF (NOT MISSING(NEOFFI_Extraversion) AND missingPersTot >= 10)
  NEOFFI_Extraversion = $SYSMIS.
VARIABLE LABELS NEOFFI_Extraversion
  "NEO-FFI-3 - Extraversion Score (range = 0-48)".

* Openness.
COMPUTE NEOFFI_Openness =
  RecSCQPers3 + RecSCQPers8 + RecSCQPers13 + RecSCQPers18 + RecSCQPers23 + RecSCQPers28 + RecSCQPers33 + RecSCQPers38 + RecSCQPers43 + RecSCQPers48 + RecSCQPers53 + RecSCQPers58.
DO REPEAT v = RecSCQPers3 RecSCQPers8 RecSCQPers13 RecSCQPers18 RecSCQPers23 RecSCQPers28 RecSCQPers33 RecSCQPers38 RecSCQPers43 RecSCQPers48 RecSCQPers53 RecSCQPers58.
  IF (MISSING(v) AND missing_Openness >= 1 AND missing_Openness <= 4) v = 2.
END REPEAT.
IF (missing_Openness >= 1 AND missing_Openness <= 4)
  NEOFFI_Openness =
  RecSCQPers3 + RecSCQPers8 + RecSCQPers13 + RecSCQPers18 + RecSCQPers23 + RecSCQPers28 + RecSCQPers33 + RecSCQPers38 + RecSCQPers43 + RecSCQPers48 + RecSCQPers53 + RecSCQPers58.
IF (NOT MISSING(NEOFFI_Openness) AND missingPersTot >= 10)
  NEOFFI_Openness = $SYSMIS.
VARIABLE LABELS NEOFFI_Openness
  "NEO-FFI-3 - Openness to Experience Score (range = 0-48)".

* Agreeableness.
COMPUTE NEOFFI_Agreeableness =
  RecSCQPers4 + RecSCQPers9 + RecSCQPers14 + RecSCQPers19 + RecSCQPers24 + RecSCQPers29 + RecSCQPers34 + RecSCQPers39 + RecSCQPers44 + RecSCQPers49 + RecSCQPers54 + RecSCQPers59.
DO REPEAT v = RecSCQPers4 RecSCQPers9 RecSCQPers14 RecSCQPers19 RecSCQPers24 RecSCQPers29 RecSCQPers34 RecSCQPers39 RecSCQPers44 RecSCQPers49 RecSCQPers54 RecSCQPers59.
  IF (MISSING(v) AND missing_Agreeable >= 1 AND missing_Agreeable <= 4
      AND missingPersTot < 10) v = 2.
END REPEAT.
IF (missing_Agreeable >= 1 AND missing_Agreeable <= 4)
  NEOFFI_Agreeableness =
  RecSCQPers4 + RecSCQPers9 + RecSCQPers14 + RecSCQPers19 + RecSCQPers24 + RecSCQPers29 + RecSCQPers34 + RecSCQPers39 + RecSCQPers44 + RecSCQPers49 + RecSCQPers54 + RecSCQPers59.
IF (NOT MISSING(NEOFFI_Agreeableness) AND missingPersTot >= 10)
  NEOFFI_Agreeableness = $SYSMIS.
VARIABLE LABELS NEOFFI_Agreeableness
  "NEO-FFI-3 - Agreeableness Score (range = 0-48)".

* Conscientiousness.
COMPUTE NEOFFI_Conscientiousness =
  RecSCQPers5 + RecSCQPers10 + RecSCQPers15 + RecSCQPers20 + RecSCQPers25 + RecSCQPers30 + RecSCQPers35 + RecSCQPers40 + RecSCQPers45 + RecSCQPers50 + RecSCQPers55 + RecSCQPers60.
DO REPEAT v = RecSCQPers5 RecSCQPers10 RecSCQPers15 RecSCQPers20 RecSCQPers25 RecSCQPers30 RecSCQPers35 RecSCQPers40 RecSCQPers45 RecSCQPers50 RecSCQPers55 RecSCQPers60.
  IF (MISSING(v) AND missing_Conscient >= 1 AND missing_Conscient <= 4
      AND missingPersTot < 10) v = 2.
END REPEAT.
IF (missing_Conscient >= 1 AND missing_Conscient <= 4)
  NEOFFI_Conscientiousness =
  RecSCQPers5 + RecSCQPers10 + RecSCQPers15 + RecSCQPers20 + RecSCQPers25 + RecSCQPers30 + RecSCQPers35 + RecSCQPers40 + RecSCQPers45 + RecSCQPers50 + RecSCQPers55 + RecSCQPers60.
IF (NOT MISSING(NEOFFI_Conscientiousness) AND missingPersTot >= 10)
  NEOFFI_Conscientiousness = $SYSMIS.
VARIABLE LABELS NEOFFI_Conscientiousness
  "NEO-FFI-3 - Conscientiousness Score (range = 0-48)".

DESCRIPTIVES VARIABLES=
  NEOFFI_Neuroticism NEOFFI_Extraversion NEOFFI_Openness
  NEOFFI_Agreeableness NEOFFI_Conscientiousness
  /SAVE.

* DESCRIPTIVES /SAVE creates ZNEOFFI_* variables; SPSS variable names are
* case-insensitive, corresponding to the zNEOFFI_* names in the Stata source.
VARIABLE LABELS
  ZNEOFFI_Neuroticism "Standardised scores on the NEO-FFI-3 Neuroticism dimension"
  ZNEOFFI_Extraversion "Standardised scores on the NEO-FFI-3 Extraversion dimension"
  ZNEOFFI_Openness "Standardised scores on the NEO-FFI-3 Openness dimension"
  ZNEOFFI_Agreeableness "Standardised scores on the NEO-FFI-3 Agreeableness dimension"
  ZNEOFFI_Conscientiousness "Standardised scores on the NEO-FFI-3 Conscientiousness dimension".

RECODE NEOFFI_Neuroticism
  (0 THRU 8=1) (9 THRU 16=2) (17 THRU 25=3) (26 THRU 32=4) (33 THRU 48=5)
  INTO NEOFFI_Neuroticism_profile.
RECODE NEOFFI_Extraversion
  (0 THRU 18=1) (19 THRU 24=2) (25 THRU 31=3) (32 THRU 37=4) (38 THRU 48=5)
  INTO NEOFFI_Extraversion_profile.
RECODE NEOFFI_Openness
  (0 THRU 18=1) (19 THRU 24=2) (25 THRU 31=3) (32 THRU 38=4) (39 THRU 48=5)
  INTO NEOFFI_Openness_profile.
RECODE NEOFFI_Agreeableness
  (0 THRU 22=1) (23 THRU 28=2) (29 THRU 35=3) (36 THRU 41=4) (42 THRU 48=5)
  INTO NEOFFI_Agreeableness_profile.
RECODE NEOFFI_Conscientiousness
  (0 THRU 22=1) (23 THRU 28=2) (29 THRU 35=3) (36 THRU 41=4) (42 THRU 48=5)
  INTO NEOFFI_Conscientiousness_profile.

VALUE LABELS
  NEOFFI_Neuroticism_profile NEOFFI_Extraversion_profile
  NEOFFI_Openness_profile NEOFFI_Agreeableness_profile
  NEOFFI_Conscientiousness_profile
  1 "Very low" 2 "Low" 3 "Average" 4 "High" 5 "Very High".

VARIABLE LABELS
  NEOFFI_Neuroticism_profile "Profile score on the NEO-FFI-3 NEUROTICISM dimension"
  NEOFFI_Extraversion_profile "Profile score on the NEO-FFI-3 EXTRAVERSION dimension"
  NEOFFI_Openness_profile "Profile score on the NEO-FFI-3 OPENNESS dimension"
  NEOFFI_Agreeableness_profile "Profile score on the NEO-FFI-3 AGREEABLENESS dimension"
  NEOFFI_Conscientiousness_profile "Profile score on the NEO-FFI-3 CONSCIENTIOUSNESS dimension".

EXECUTE.

Download SPSS .sps file

Neighbourhood Cohesion
PSS

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

 

TILDA, Department of Health and Health Research Board