# install.packages("haven")
library(tidyverse)
library(haven)
library(labelled)
library(sjlabelled)
library(janitor)
library(sjPlot)
library(psych)
set_theme(theme_minimal())Data Preparation for Case 31
Complete Version
1 Libraries
1.1 Loading common packages
2 Setting Up Data
2.1 Reading SPSS data
data <- read_sav("Case 31 Data_efcu_1.sav")
data <- data |>
clean_names()
# generate data dictionary
data |>
view_df()| ID | Name | Label | Values | Value Labels |
| 1 | q3 | Employees are Courteous | 1 5 |
Strongly Disagree Strongly Agree |
| 2 | q4 | employees are helpful | 1 5 |
Strongly Disagree Strongly Agree |
| 3 | q5 | employees are professional | 1 5 |
Strongly Disagree Strongly Agree |
| 4 | q6 | employees are available | 1 5 |
Strongly Disagree Strongly Agree |
| 5 | q7 | savings rates | 1 2 3 4 5 6 |
Very High High Average Low Very Low No Opinion |
| 6 | q8 | statement frequency | 1 2 3 4 5 6 |
Very High High Average Low Very Low No Opinion |
| 7 | q9 | statement frequency | 1 2 3 4 5 |
Too Often Very Often About Right Not Often Enough Never |
| 8 | q10 | statement accuracy | 1 2 3 4 |
Excellent Good Fair Poor |
| 9 | q11 | statement understandable | 1 2 |
Yes No |
| 10 | q12 | Account Confidential | 1 2 |
Yes No |
| 11 | q13 | regular share account | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 12 | q14 | special subaccounts | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 13 | q15 | Christmas club account | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 14 | q16 | IRA | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 15 | q17 | Master credit card | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 16 | q18 | signature loans | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 17 | q19 | new car loans | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 18 | q20 | late model car loans | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 19 | q21 | older model car loans | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 20 | q22 | household goods loans | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 21 | q23 | recreational loans | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 22 | q24 | share collateralized loan | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 23 | q25 | IRA loans | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 24 | q26 | line of credit loans | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 25 | q27 | currently have loan | 1 2 |
Yes No |
| 26 | q30 | CU rates lower | 1 5 |
Strongly Disagree Strongly Agree |
| 27 | q31 | CU confidential | 1 5 |
Strongly Disagree Strongly Agree |
| 28 | q32 | CU is prompt | 1 5 |
Strongly Disagree Strongly Agree |
| 29 | q33 | CU meets needs of members | 1 5 |
Strongly Disagree Strongly Agree |
| 30 | q34 | CU loan applications simple | 1 5 |
Strongly Disagree Strongly Agree |
| 31 | q37 | overall rating | 1 2 3 4 5 6 |
Excellent Good Average Poor Very Poor No Opinion |
| 32 | overall_employee_performace | range: 2.8-5.0 | ||
| 33 | q38 | headquarter | 1 2 |
yes no |
| 34 | employeeperformance | range: 2.8-5.0 | ||
3 Data Preparation
3.1 Attitudes towards Employee Proficiency
3.1.1 q3
data |> # ctr + shift + M
count(q3) |>
mutate(percent = n/sum(n))# A tibble: 3 × 3
q3 n percent
<dbl+lbl> <int> <dbl>
1 3 13 0.102
2 4 57 0.445
3 5 [Strongly Agree] 58 0.453
five_pt_likert <- c("Strongly Disagree" = 1,
"Disagree" = 2,
"Uncertain" = 3,
"Agree" = 4,
"Strongly Agree" = 5)
data_clean <- data |>
set_value_labels(q3 = five_pt_likert) |>
set_variable_labels(q3 = "Employees are Courteous")
data_clean |>
select(q3) |>
var_label() $q3
[1] "Employees are Courteous"
data_clean |>
select(q3) |>
val_labels() |>
unique()# A tibble: 3 × 1
q3
<dbl+lbl>
1 4 [Agree]
2 5 [Strongly Agree]
3 3 [Uncertain]
3.1.2 q4
data_clean <- data_clean |>
set_variable_labels(q4 = "Employees are helpful") |>
set_value_labels(q4 = five_pt_likert)
data_clean |>
select(q4) |>
var_label()$q4
[1] "Employees are helpful"
data_clean |>
select(q4) |>
val_labels()# A tibble: 128 × 1
q4
<dbl+lbl>
1 4 [Agree]
2 4 [Agree]
3 4 [Agree]
4 4 [Agree]
5 4 [Agree]
6 4 [Agree]
7 5 [Strongly Agree]
8 5 [Strongly Agree]
9 5 [Strongly Agree]
10 4 [Agree]
# ℹ 118 more rows
3.1.3 q5 and q6
data_clean <- data_clean |>
set_variable_labels(q5 = "Employees are professional") |>
set_value_labels(q5 = five_pt_likert) |>
set_variable_labels(q6 = "Employees are available") |>
set_value_labels(q6 = five_pt_likert)
data_clean |>
select(q5, q6) |>
var_label()$q5
[1] "Employees are professional"
$q6
[1] "Employees are available"
data_clean |>
select(q5, q6) |>
val_labels()# A tibble: 128 × 2
q5 q6
<dbl+lbl> <dbl+lbl>
1 4 [Agree] 4 [Agree]
2 4 [Agree] 4 [Agree]
3 4 [Agree] 4 [Agree]
4 3 [Uncertain] 4 [Agree]
5 4 [Agree] 4 [Agree]
6 4 [Agree] 4 [Agree]
7 5 [Strongly Agree] 5 [Strongly Agree]
8 4 [Agree] 4 [Agree]
9 5 [Strongly Agree] 5 [Strongly Agree]
10 4 [Agree] 4 [Agree]
# ℹ 118 more rows
3.1.4 Reliability analysis
data_clean |>
select(q3:q6) |>
alpha() #.87: cutoff is .70
Reliability analysis
Call: alpha(x = select(data_clean, q3:q6))
raw_alpha std.alpha G6(smc) average_r S/N ase mean sd median_r
0.87 0.87 0.85 0.62 6.6 0.019 4.2 0.59 0.65
95% confidence boundaries
lower alpha upper
Feldt 0.82 0.87 0.9
Duhachek 0.83 0.87 0.9
Reliability if an item is dropped:
raw_alpha std.alpha G6(smc) average_r S/N alpha se var.r med.r
q3 0.85 0.86 0.80 0.66 5.9 0.022 0.00056 0.67
q4 0.79 0.79 0.73 0.56 3.8 0.033 0.00800 0.57
q5 0.82 0.83 0.80 0.62 4.8 0.028 0.01894 0.67
q6 0.85 0.85 0.80 0.66 5.8 0.023 0.00610 0.68
Item statistics
n raw.r std.r r.cor r.drop mean sd
q3 128 0.80 0.81 0.73 0.66 4.4 0.66
q4 128 0.91 0.91 0.88 0.82 4.3 0.70
q5 128 0.85 0.85 0.78 0.73 4.1 0.66
q6 128 0.83 0.82 0.73 0.67 4.1 0.79
Non missing response frequency for each item
2 3 4 5 miss
q3 0.00 0.10 0.45 0.45 0
q4 0.01 0.11 0.45 0.44 0
q5 0.00 0.18 0.56 0.26 0
q6 0.03 0.18 0.47 0.32 0
3.1.5 Factor analysis
data_clean |>
select(q3:q6) |>
factanal(factors = 1, rotation = "none")
Call:
factanal(x = select(data_clean, q3:q6), factors = 1, rotation = "none")
Uniquenesses:
q3 q4 q5 q6
0.431 0.141 0.423 0.473
Loadings:
Factor1
q3 0.754
q4 0.927
q5 0.760
q6 0.726
Factor1
SS loadings 2.531
Proportion Var 0.633
Test of the hypothesis that 1 factor is sufficient.
The chi square statistic is 11.35 on 2 degrees of freedom.
The p-value is 0.00344
data_clean |>
select(q3:q6) |>
fa(nfactors = 1, rotate = "none") |>
fa.diagram()3.1.6 PCA (Principle Component Analysis)
data_clean |>
select(q3:q6) |>
prcomp(scale. = TRUE) |>
summary() # % of variance explained by the first factorImportance of components:
PC1 PC2 PC3 PC4
Standard deviation 1.6968 0.7450 0.5906 0.46601
Proportion of Variance 0.7198 0.1388 0.0872 0.05429
Cumulative Proportion 0.7198 0.8585 0.9457 1.00000
3.1.7 Scree plot
data_clean |>
select(q3:q6) |>
scree()3.1.8 Creating a composite scale
data_clean <- data_clean |>
mutate(at_emp = rowMeans(across(q3:q6), na.rm = TRUE))
# from psych: descriptive statistics
describe(data_clean$at_emp) vars n mean sd median trimmed mad min max range skew kurtosis se
X1 1 128 4.21 0.59 4 4.25 0.74 2.75 5 2.25 -0.32 -0.69 0.05
3.2 q7r: Savings Rate
data_clean |> count(q7)# A tibble: 5 × 2
q7 n
<dbl+lbl> <int>
1 2 [High] 22
2 3 [Average] 83
3 4 [Low] 12
4 5 [Very Low] 1
5 NA 10
data_clean <- data_clean |>
mutate(q7r = case_when(q7 == 1 ~ 5,
q7 == 2 ~ 4,
q7 == 3 ~ 3,
q7 == 4 ~ 2,
q7 == 5 ~ 1,
TRUE ~ NA)) |>
set_variable_labels(q7r = "Savings rates") |>
set_value_labels(q7r = c("Very Low" = 1,
"Low" = 2,
"Average" = 3,
"High" = 4,
"Very High" = 5))
data_clean |> count(q7r)# A tibble: 5 × 2
q7r n
<dbl+lbl> <int>
1 1 [Very Low] 1
2 2 [Low] 12
3 3 [Average] 83
4 4 [High] 22
5 NA 10
3.3 q8r: Fund borrowing rates
data_clean |> count(q8)# A tibble: 6 × 2
q8 n
<dbl+lbl> <int>
1 1 [Very High] 4
2 2 [High] 26
3 3 [Average] 59
4 4 [Low] 17
5 5 [Very Low] 1
6 NA 21
data_clean <- data_clean |>
mutate(q8r = case_when(q8 == 1 ~ 5,
q8 == 2 ~ 4,
q8 == 3 ~ 3,
q8 == 4 ~ 2,
q8 == 5 ~ 1,
TRUE ~ NA)) |>
set_variable_labels(q8r = "Fund borrowing rates") |>
set_value_labels(q8r = c("Very Low" = 1,
"Low" = 2,
"Average" = 3,
"High" = 4,
"Very High" = 5))
data_clean |> count(q8r)# A tibble: 6 × 2
q8r n
<dbl+lbl> <int>
1 1 [Very Low] 1
2 2 [Low] 17
3 3 [Average] 59
4 4 [High] 26
5 5 [Very High] 4
6 NA 21
3.4 q9r: Statement Frequency
data_clean |> count(q9)# A tibble: 2 × 2
q9 n
<dbl+lbl> <int>
1 3 [About Right] 99
2 4 [Not Often Enough] 29
data_clean |>
select(q9) |>
class()[1] "tbl_df" "tbl" "data.frame"
data_clean <- data_clean |>
mutate(q9r = 6 - q9) |>
set_variable_labels(q9r = "Statement Frequency") |>
set_value_labels(q9r = c("Never" = 1,
"Not Often Enough" = 2,
"About Right" = 3,
"Very Often" = 4,
"Too Often" = 5))
data_clean |> count(q9r) # A tibble: 2 × 2
q9r n
<dbl+lbl> <int>
1 2 [Not Often Enough] 29
2 3 [About Right] 99
3.5 q10r: Statement Accuracy
data_clean |> count(q10)# A tibble: 4 × 2
q10 n
<dbl+lbl> <int>
1 1 [Excellent] 68
2 2 [Good] 54
3 3 [Fair] 4
4 4 [Poor] 2
data_clean <- data_clean |>
mutate(q10r = 5 - q10) |>
set_variable_labels(q10r = "Statement Accuracy") |>
set_value_labels(q10r = c("Poor" = 1,
"Fair" = 2,
"Good" = 3,
"Excellent" = 4))
data_clean |> count(q10r) # A tibble: 4 × 2
q10r n
<dbl+lbl> <int>
1 1 [Poor] 2
2 2 [Fair] 4
3 3 [Good] 54
4 4 [Excellent] 68
3.6 Awareness of Financial Services
aware_scale_3 <- c("Unaware" = 1,
"Aware but Have Not Used" = 2,
"Aware and Have Used" = 3)3.6.1 q13r
data_clean |> count(q13)# A tibble: 3 × 2
q13 n
<dbl+lbl> <int>
1 1 [Aware and Have Used] 13
2 2 [Aware but Have Not Used] 32
3 3 83
data_clean <- data_clean |>
mutate(q13r = 4 - q13) |>
set_variable_labels(q13r = "Regular share account") |>
set_value_labels(q13r = aware_scale_3)
data_clean |> count(q13r) # A tibble: 3 × 2
q13r n
<dbl+lbl> <int>
1 1 [Unaware] 83
2 2 [Aware but Have Not Used] 32
3 3 [Aware and Have Used] 13
3.6.2 Creating a function
library(rlang)
Attaching package: 'rlang'
The following objects are masked from 'package:sjlabelled':
as_character, as_label
The following objects are masked from 'package:purrr':
%@%, flatten, flatten_chr, flatten_dbl, flatten_int, flatten_lgl,
flatten_raw, invoke, splice
aware_recode <- function(tbl, var, var_label) {
varr <- paste0(rlang::as_string(ensym(var)), "r")
tbl <- tbl |>
mutate(!!varr := 4 - as.numeric({{var}})) |>
set_variable_labels(!!varr := var_label) |>
set_value_labels(!!varr := aware_scale_3)
return(tbl)
}
data_clean <- data_clean |>
aware_recode(q15, "Special subaccounts")
data_clean |>
count(q15r)# A tibble: 3 × 2
q15r n
<dbl+lbl> <int>
1 1 [Unaware] 42
2 2 [Aware but Have Not Used] 75
3 3 [Aware and Have Used] 11
3.6.3 q14r
data_clean |> count(q14)# A tibble: 3 × 2
q14 n
<dbl+lbl> <int>
1 1 [Aware and Have Used] 12
2 2 [Aware but Have Not Used] 70
3 3 46
data_clean <- data_clean |>
aware_recode(q14, "Special subaccounts")
data_clean |> count(q14r) # A tibble: 3 × 2
q14r n
<dbl+lbl> <int>
1 1 [Unaware] 46
2 2 [Aware but Have Not Used] 70
3 3 [Aware and Have Used] 12
3.6.4 q15r-q26
3.6.4.1 functions that didn’t work
3.6.5 q15r
data_clean |> count(q15)# A tibble: 3 × 2
q15 n
<dbl+lbl> <int>
1 1 [Aware and Have Used] 11
2 2 [Aware but Have Not Used] 75
3 3 42
data_clean <- data_clean |>
aware_recode(q15, "Christmas club account")
data_clean |> count(q15r) # A tibble: 3 × 2
q15r n
<dbl+lbl> <int>
1 1 [Unaware] 42
2 2 [Aware but Have Not Used] 75
3 3 [Aware and Have Used] 11
3.6.6 q16r
data_clean |> count(q16)# A tibble: 3 × 2
q16 n
<dbl+lbl> <int>
1 1 [Aware and Have Used] 29
2 2 [Aware but Have Not Used] 64
3 3 35
data_clean <- data_clean |>
aware_recode(q16, "IRA")
data_clean |> count(q16r) # A tibble: 3 × 2
q16r n
<dbl+lbl> <int>
1 1 [Unaware] 35
2 2 [Aware but Have Not Used] 64
3 3 [Aware and Have Used] 29
3.6.7 q17r
data_clean |> count(q17)# A tibble: 3 × 2
q17 n
<dbl+lbl> <int>
1 1 [Aware and Have Used] 56
2 2 [Aware but Have Not Used] 57
3 3 15
data_clean <- data_clean |>
aware_recode(q17, "Master credit card")
data_clean |> count(q17r) # A tibble: 3 × 2
q17r n
<dbl+lbl> <int>
1 1 [Unaware] 15
2 2 [Aware but Have Not Used] 57
3 3 [Aware and Have Used] 56
3.6.8 q18r
data_clean |> count(q18)# A tibble: 3 × 2
q18 n
<dbl+lbl> <int>
1 1 [Aware and Have Used] 19
2 2 [Aware but Have Not Used] 104
3 3 5
data_clean <- data_clean |>
aware_recode(q18, "Signature loans")
data_clean |> count(q18r) # A tibble: 3 × 2
q18r n
<dbl+lbl> <int>
1 1 [Unaware] 5
2 2 [Aware but Have Not Used] 104
3 3 [Aware and Have Used] 19
3.6.9 q19r
data_clean |> count(q19)# A tibble: 3 × 2
q19 n
<dbl+lbl> <int>
1 1 [Aware and Have Used] 24
2 2 [Aware but Have Not Used] 99
3 3 5
data_clean <- data_clean |>
aware_recode(q19, "New car loans")
data_clean |> count(q19r) # A tibble: 3 × 2
q19r n
<dbl+lbl> <int>
1 1 [Unaware] 5
2 2 [Aware but Have Not Used] 99
3 3 [Aware and Have Used] 24
3.6.10 q20r
data_clean |> count(q20)# A tibble: 3 × 2
q20 n
<dbl+lbl> <int>
1 1 [Aware and Have Used] 14
2 2 [Aware but Have Not Used] 102
3 3 12
data_clean <- data_clean |>
aware_recode(q20, "Late model car loans")
data_clean |> count(q20r) # A tibble: 3 × 2
q20r n
<dbl+lbl> <int>
1 1 [Unaware] 12
2 2 [Aware but Have Not Used] 102
3 3 [Aware and Have Used] 14
3.6.11 q21r
data_clean |> count(q21)# A tibble: 3 × 2
q21 n
<dbl+lbl> <int>
1 1 [Aware and Have Used] 12
2 2 [Aware but Have Not Used] 83
3 3 33
data_clean <- data_clean |>
aware_recode(q21, "Older model car loans")
data_clean |> count(q21r) # A tibble: 3 × 2
q21r n
<dbl+lbl> <int>
1 1 [Unaware] 33
2 2 [Aware but Have Not Used] 83
3 3 [Aware and Have Used] 12
3.6.12 q22r
data_clean |> count(q22)# A tibble: 3 × 2
q22 n
<dbl+lbl> <int>
1 1 [Aware and Have Used] 11
2 2 [Aware but Have Not Used] 80
3 3 37
data_clean <- data_clean |>
aware_recode(q22, "Household goods loans")
data_clean |> count(q22r) # A tibble: 3 × 2
q22r n
<dbl+lbl> <int>
1 1 [Unaware] 37
2 2 [Aware but Have Not Used] 80
3 3 [Aware and Have Used] 11
3.6.13 q23r
data_clean |> count(q23)# A tibble: 3 × 2
q23 n
<dbl+lbl> <int>
1 1 [Aware and Have Used] 13
2 2 [Aware but Have Not Used] 60
3 3 55
data_clean <- data_clean |>
aware_recode(q23, "Recreational loans")
data_clean |> count(q23r) # A tibble: 3 × 2
q23r n
<dbl+lbl> <int>
1 1 [Unaware] 55
2 2 [Aware but Have Not Used] 60
3 3 [Aware and Have Used] 13
3.6.14 q24r
data_clean |> count(q24)# A tibble: 3 × 2
q24 n
<dbl+lbl> <int>
1 1 [Aware and Have Used] 2
2 2 [Aware but Have Not Used] 57
3 3 69
data_clean <- data_clean |>
aware_recode(q24, "Share collateralized loan")
data_clean |> count(q24r) # A tibble: 3 × 2
q24r n
<dbl+lbl> <int>
1 1 [Unaware] 69
2 2 [Aware but Have Not Used] 57
3 3 [Aware and Have Used] 2
3.6.15 q25r
data_clean |> count(q25)# A tibble: 3 × 2
q25 n
<dbl+lbl> <int>
1 1 [Aware and Have Used] 4
2 2 [Aware but Have Not Used] 46
3 3 78
data_clean <- data_clean |>
aware_recode(q25, "IRA loans")
data_clean |> count(q25r) # A tibble: 3 × 2
q25r n
<dbl+lbl> <int>
1 1 [Unaware] 78
2 2 [Aware but Have Not Used] 46
3 3 [Aware and Have Used] 4
3.6.16 q26r
data_clean |> count(q26)# A tibble: 2 × 2
q26 n
<dbl+lbl> <int>
1 1 [Aware and Have Used] 48
2 2 [Aware but Have Not Used] 80
data_clean <- data_clean |>
aware_recode(q26, "Line of credit loans")
data_clean |> count(q26r) # A tibble: 2 × 2
q26r n
<dbl+lbl> <int>
1 2 [Aware but Have Not Used] 80
2 3 [Aware and Have Used] 48
3.7 q30 - q34
data_clean <- data_clean |>
set_value_labels(q30 = five_pt_likert,
q31 = five_pt_likert,
q32 = five_pt_likert,
q33 = five_pt_likert,
q34 = five_pt_likert) 3.8 q37r
data_clean |> count(q37)# A tibble: 6 × 2
q37 n
<dbl+lbl> <int>
1 1 [Excellent] 31
2 2 [Good] 71
3 3 [Average] 16
4 4 [Poor] 2
5 5 [Very Poor] 1
6 NA 7
data_clean <- data_clean |>
mutate(q37r = case_when(q37 == 1 ~ 5,
q37 == 2 ~ 4,
q37 == 3 ~ 3,
q37 == 4 ~ 2,
q37 == 5 ~ 1,
q37 == 6 ~ NA)) |>
set_value_labels(q37r = c("Very Poor" = 1,
"Poor" = 2,
"Average" = 3,
"Good" = 4,
"Excellent" = 5))
data_clean |> count(q37r)# A tibble: 6 × 2
q37r n
<dbl+lbl> <int>
1 1 [Very Poor] 1
2 2 [Poor] 2
3 3 [Average] 16
4 4 [Good] 71
5 5 [Excellent] 31
6 NA 7
4 Renaming Clean Data
data_preped <- data_clean
data_preped |>
view_df()| ID | Name | Label | Values | Value Labels |
| 1 | q3 | Employees are Courteous | 1 2 3 4 5 |
Strongly Disagree Disagree Uncertain Agree Strongly Agree |
| 2 | q4 | Employees are helpful | 1 2 3 4 5 |
Strongly Disagree Disagree Uncertain Agree Strongly Agree |
| 3 | q5 | Employees are professional | 1 2 3 4 5 |
Strongly Disagree Disagree Uncertain Agree Strongly Agree |
| 4 | q6 | Employees are available | 1 2 3 4 5 |
Strongly Disagree Disagree Uncertain Agree Strongly Agree |
| 5 | q7 | savings rates | 1 2 3 4 5 6 |
Very High High Average Low Very Low No Opinion |
| 6 | q8 | statement frequency | 1 2 3 4 5 6 |
Very High High Average Low Very Low No Opinion |
| 7 | q9 | statement frequency | 1 2 3 4 5 |
Too Often Very Often About Right Not Often Enough Never |
| 8 | q10 | statement accuracy | 1 2 3 4 |
Excellent Good Fair Poor |
| 9 | q11 | statement understandable | 1 2 |
Yes No |
| 10 | q12 | Account Confidential | 1 2 |
Yes No |
| 11 | q13 | regular share account | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 12 | q14 | special subaccounts | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 13 | q15 | Christmas club account | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 14 | q16 | IRA | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 15 | q17 | Master credit card | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 16 | q18 | signature loans | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 17 | q19 | new car loans | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 18 | q20 | late model car loans | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 19 | q21 | older model car loans | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 20 | q22 | household goods loans | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 21 | q23 | recreational loans | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 22 | q24 | share collateralized loan | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 23 | q25 | IRA loans | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 24 | q26 | line of credit loans | 1 2 |
Aware and Have Used Aware but Have Not Used |
| 25 | q27 | currently have loan | 1 2 |
Yes No |
| 26 | q30 | CU rates lower | 1 2 3 4 5 |
Strongly Disagree Disagree Uncertain Agree Strongly Agree |
| 27 | q31 | CU confidential | 1 2 3 4 5 |
Strongly Disagree Disagree Uncertain Agree Strongly Agree |
| 28 | q32 | CU is prompt | 1 2 3 4 5 |
Strongly Disagree Disagree Uncertain Agree Strongly Agree |
| 29 | q33 | CU meets needs of members | 1 2 3 4 5 |
Strongly Disagree Disagree Uncertain Agree Strongly Agree |
| 30 | q34 | CU loan applications simple | 1 2 3 4 5 |
Strongly Disagree Disagree Uncertain Agree Strongly Agree |
| 31 | q37 | overall rating | 1 2 3 4 5 6 |
Excellent Good Average Poor Very Poor No Opinion |
| 32 | overall_employee_performace | range: 2.8-5.0 | ||
| 33 | q38 | headquarter | 1 2 |
yes no |
| 34 | employeeperformance | range: 2.8-5.0 | ||
| 35 | at_emp | range: 2.8-5.0 | ||
| 36 | q7r | Savings rates | 1 2 3 4 5 |
Very Low Low Average High Very High |
| 37 | q8r | Fund borrowing rates | 1 2 3 4 5 |
Very Low Low Average High Very High |
| 38 | q9r | Statement Frequency | 1 2 3 4 5 |
Never Not Often Enough About Right Very Often Too Often |
| 39 | q10r | Statement Accuracy | 1 2 3 4 |
Poor Fair Good Excellent |
| 40 | q13r | Regular share account | 1 2 3 |
Unaware Aware but Have Not Used Aware and Have Used |
| 41 | q15r | Christmas club account | 1 2 3 |
Unaware Aware but Have Not Used Aware and Have Used |
| 42 | q14r | Special subaccounts | 1 2 3 |
Unaware Aware but Have Not Used Aware and Have Used |
| 43 | q16r | IRA | 1 2 3 |
Unaware Aware but Have Not Used Aware and Have Used |
| 44 | q17r | Master credit card | 1 2 3 |
Unaware Aware but Have Not Used Aware and Have Used |
| 45 | q18r | Signature loans | 1 2 3 |
Unaware Aware but Have Not Used Aware and Have Used |
| 46 | q19r | New car loans | 1 2 3 |
Unaware Aware but Have Not Used Aware and Have Used |
| 47 | q20r | Late model car loans | 1 2 3 |
Unaware Aware but Have Not Used Aware and Have Used |
| 48 | q21r | Older model car loans | 1 2 3 |
Unaware Aware but Have Not Used Aware and Have Used |
| 49 | q22r | Household goods loans | 1 2 3 |
Unaware Aware but Have Not Used Aware and Have Used |
| 50 | q23r | Recreational loans | 1 2 3 |
Unaware Aware but Have Not Used Aware and Have Used |
| 51 | q24r | Share collateralized loan | 1 2 3 |
Unaware Aware but Have Not Used Aware and Have Used |
| 52 | q25r | IRA loans | 1 2 3 |
Unaware Aware but Have Not Used Aware and Have Used |
| 53 | q26r | Line of credit loans | 1 2 3 |
Unaware Aware but Have Not Used Aware and Have Used |
| 54 | q37r | 1 2 3 4 5 |
Very Poor Poor Average Good Excellent |
|
5 Exporting Prepped Data
5.1 SPSS data
data_preped |>
write_sav("Case 31 Data_efcu_Prepped.sav")5.2 Excel Data as Metadata
library(writexl)
data_preped |>
write_xlsx("Case 31 Data_efcu_Prepped.xlsx")6 Appendix
6.1 alternative way using select(): in this case, we need to use anonymous function
data_clean |>
(\(df) df |>
mutate(row_mean = rowMeans(select(df, q3, q4, q5, q6), na.rm = TRUE))
)() |>
select(row_mean)6.2 Alternative way to create a recode function for awareness
aware_recode <- function(tbl, var, var_label) {
varr <- paste0(deparse(substitute(var)), "r")
tbl <- tbl |>
mutate(!!sym(varr) := 4 - {{var}}
) |>
set_variable_labels(!!sym(varr) := var_label) |>
set_value_labels(!!sym(varr) := aware_scale_3)
return(tbl)
}