我是一个使用R的初学者,当我试图计算多个子尺度的Cronbach's alpha时,我正在努力。我用的是心理治疗包。
这是我的数据库的一个例子:我有两个不同的分量表。分量表A包括项目1至3,分量表B包括项目4至5。
Subscale Student Item1 Item2 Item3 Item4 Item5
A 1 1 0 1 NA NA
A 2 0 1 1 NA NA
A 3 1 1 1 NA NA
B 1 NA NA NA 1 1
B 2 NA NA NA 1 0
B 3 NA NA NA 0 0同时计算每个子尺度的Cronbach's alpha。我试着用过心理治疗包。
Reliability <- group_by(df,Subscale) %>%
alpha()但是,我得到以下错误:缺少值的变量可能是本金中的分值错误(x,Item5 = Item4 ):对不起:相关矩阵中缺少值(NAs)不允许我继续。请删除这些变量,然后重试。此外:警告消息: 1: In var(if (is.vector(x) || is.factor(x)) x else as.double(x),na.rm = na.rm):强制引入的NAs : In alpha(.):Item = Subscale没有差异,已被删除
是否有可能在创建新的数据框或列表的同时计算这些子尺度的Cronbach's alpha?或者我应该使用split函数将两个子尺度分开,并分别计算每个子尺度的alphas?
提前感谢!
发布于 2020-07-07 06:51:02
假设'Subscale‘是列名,那么alpha的x应该是data.frame或matrix。一种选择是group_split进入data.frame的list,然后使用map在list上循环,并在'Item‘列上应用alpha
library(dplyr)
library(purrr)
library(psych)
df %>%
select(-Student) %>%
group_split(Subscale) %>%
map(~ alpha(.[-1]))数据
df <- structure(list(Subscale = c("A", "A", "A", "B", "B", "B"), Student = c(1L,
2L, 3L, 1L, 2L, 3L), Item1 = c(1L, 0L, 1L, NA, NA, NA), Item2 = c(0L,
1L, 1L, NA, NA, NA), Item3 = c(1L, 1L, 1L, NA, NA, NA), Item4 = c(NA,
NA, NA, 1L, 1L, 0L), Item5 = c(NA, NA, NA, 1L, 0L, 0L)), class = "data.frame",
row.names = c(NA,
-6L))https://stackoverflow.com/questions/62765581
复制相似问题