Create a composite variable

Load Packages

if(!require(haven)){
  install.packages("haven",dependencies = TRUE)
  library(haven)
}
Loading required package: haven
if(!require(tidyverse)){
  install.packages("tidyverse",dependencies = TRUE)
  library(tidyverse)
}
Loading required package: tidyverse
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.4     ✔ readr     2.1.5
✔ forcats   1.0.0     ✔ stringr   1.5.1
✔ ggplot2   3.5.1     ✔ tibble    3.2.1
✔ lubridate 1.9.3     ✔ tidyr     1.3.1
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
if(!require(summarytools)){
  install.packages("summarytools",dependencies = TRUE)
  library(summarytools)
}
Loading required package: summarytools
Warning in fun(libname, pkgname): couldn't connect to display ":0"
system might not have X11 capabilities; in case of errors when using dfSummary(), set st_options(use.x11 = FALSE)

Attaching package: 'summarytools'
The following object is masked from 'package:tibble':

    view
if(!require(psych)){
  install.packages("psych",dependencies = TRUE)
  library(psych)
}
Loading required package: psych

Attaching package: 'psych'
The following objects are masked from 'package:ggplot2':

    %+%, alpha

Import Data

dataset <- read_sav("https://osf.io/kd4ej/download") 

Scoring Variable

#create dataframe with only relevant variables to work with
Extraversion <- data.frame (dataset$FFM_1, dataset$FFM_6, dataset$FFM_11, dataset$FFM_16, dataset$FFM_21, dataset$FFM_26, dataset$FFM_31, dataset$FFM_36)

#create list of 'keys'. The  numbers just refer to the order of the question in the data.frame() you just made. The most important thing is to mark the questions that should be reversed scored with a '-'. 
Extraversion.keys <- make.keys(Extraversion, list(Extraversion=c(1,-2,3,4,-5,6,-7,8)))

#score the scale
Extraversion.scales <- scoreItems (Extraversion.keys, Extraversion)

#save the scores
Extraversion.scores <- Extraversion.scales$scores
#save the scores back in 'dataset'
dataset$Extraversion <- Extraversion.scores[,]
#print the cronbach alpha
Extraversion.scales$alpha
      Extraversion
alpha    0.8141661