• вычислить составной счет и альфа-показатель Кронбаха для нескольких переменных во фрейме данных и добавить их в виде столбцов. - PullRequest
0 голосов
/ 04 февраля 2020

Я хочу вычислить составной балл и альфа Кронбаха для нескольких переменных в моем фрейме данных и добавить результаты в виде столбцов во фрейм данных.

Вот как выглядит мой фрейм данных:

t1pp_1  t1pp_2  t1pp_3  t1pp_4  t1se_1  t1se_2  t1se_3  t1se_4  t1cpl_1 t1cpl_2 t1cpl_3 t1cpl_4
6   3   5   3   4   3   4   3   1   2   2   3
7   4   7   6   5   5   4   5   5   5   5   5
4   4   6   5   4   4   4   4   1   2   3   2
5   5   7   5   4   5   4   5   5   4   4   4
4   2   6   6   4   4   3   4   4   4   2   3
6   5   7   5   1   1   4   4   1   2   2   2

Вот то, что я пытался, и, конечно, это не работает, но, возможно, это дает вам представление о том, что я нацеливаясь на:

library(multicon)
library(psych)
library(dplyr)

comp_and_alph <- function(data = my_data, variable_name) {
  dplyr::select(data,contains("variable_name")) %>%
    mutate(t1pp_comp = multicon::composite(.)) # is there a way to get the variable name with the '_comp'and '_alph' ending? - Maybe with paste??
    mutate(t1_alph = psych::alph(.)) %>%
      round(.$total, 2))
}

В конце я был бы очень рад, если бы мой фрейм данных выглядел следующим образом (альфа и составной должны быть округлены и отображены две десятичные точки):

t1pp_1  t1pp_2  t1pp_3  t1pp_4  t1se_1  t1se_2  t1se_3  t1se_4  t1cpl_1 t1cpl_2 t1cpl_3 t1cpl_4 t1pp_comp   t1pp_alph   t1se_comp   t1se_alph   t1cpl_comp  t1cpl_alph
6   3   5   3   4   3   4   3   1   2   2   3   3   3   3   3   3   3
7   4   7   6   5   5   4   5   5   5   5   5   5   5   5   5   5   5
4   4   6   5   4   4   4   4   1   2   3   2   2   2   2   2   2   2
5   5   7   5   4   5   4   5   5   4   4   4   4   4   4   4   4   4
4   2   6   6   4   4   3   4   4   4   2   3   3   3   3   3   3   3
6   5   7   5   1   1   4   4   1   2   2   2   2   2   2   2   2   2

Надеюсь, это понятно. Пожалуйста, скажите мне, если я скучаю по чему-то. Спасибо!

1 Ответ

2 голосов
/ 04 февраля 2020

Проблема вопроса разделена на следующие две функции:

  1. Функция comp_and_alph - исправлена ​​функция вопроса, создающая comp и alpha оценки столбцов, соответствующих только одному шаблону.
  2. Функция comp_and_alph_all соответствует всем шаблонам в variable_name.

Функции предназначены для совместной работы, предпочтительно вызывая comp_and_alpha_all.

comp_and_alph <- function(data = my_data, variable_name, ...) {
  data %>%
    select(matches(variable_name)) %>%
    mutate(comp = composite(.),
           alpha = alpha(., ...)$scores) %>%
    rename_at(vars(c("comp", "alpha")), ~paste(variable_name, .,sep = "_"))

}

comp_and_alph_all <- function(data, variables, ...){
  res <- lapply(variables, function(v){
    comp_and_alph(data, v, ...)
  })
  Reduce(function(x, y){merge(x, y)}, init = list(data), res)
}

comp_and_alph_all(df1, c("t1pp", "t1se"), check.keys = TRUE)

Данные.

df1 <-
structure(list(t1pp_1 = c(6L, 7L, 4L, 5L, 4L, 6L), t1pp_2 = c(3L, 
4L, 4L, 5L, 2L, 5L), t1pp_3 = c(5L, 7L, 6L, 7L, 6L, 7L), t1pp_4 = c(3L, 
6L, 5L, 5L, 6L, 5L), t1se_1 = c(4L, 5L, 4L, 4L, 4L, 1L), t1se_2 = c(3L, 
5L, 4L, 5L, 4L, 1L), t1se_3 = c(4L, 4L, 4L, 4L, 3L, 4L), t1se_4 = c(3L, 
5L, 4L, 5L, 4L, 4L), t1cpl_1 = c(1L, 5L, 1L, 5L, 4L, 1L), t1cpl_2 = c(2L, 
5L, 2L, 4L, 4L, 2L), t1cpl_3 = c(2L, 5L, 3L, 4L, 2L, 2L), t1cpl_4 = c(3L, 
5L, 2L, 4L, 3L, 2L)), class = "data.frame", row.names = c(NA, -6L))
...