在R中检查Likert量表的有效值

3

我是一个使用SPSS的用户,现在想要转换到R。

我有一个数据框中的几个变量(ea01ea06pre01pre09)。

数据来自问卷,呈现为Likert格式(整数从1到5)。

SPSS有一个选项可以验证这些变量的值,以检查它们是否都落在预期范围内,并显示哪些变量存在无效错误。

id ea01 ea02 ea03 ea04  
1  4    5    6    5  
2  3    2    1    3  
3  3    2    4    0  
4  5    3    4    3

验证过程应告诉我,变量ea03中的情况1是无效值,变量ea04中的情况3也是无效值。

在R中如何实现?

2个回答

5
你也可以这样做:
indx <- which(df >5 | df < 1,arr.ind=TRUE)
setNames(indx[,1], names(df)[indx[,2]])
#ea03 ea04 
#1    3 

4

一个快速的解决方案是(假设您的数据被称为df

lapply(df, function(x) which(!x %in% seq_len(5)))

如果您想创建自定义函数,可以尝试使用以下方法:
Validfunc <- function(x){
  l <- lapply(x, function(y) which(!y %in% seq_len(5)))
  Filter(Negate(function(...) length(...) == 0), l)
}

然后按照以下方式使用

Validfunc(df)

# $ea03
# [1] 1
# 
# $ea04
# [1] 3

另一个选择是将数据“熔合”并进行相应的子集操作。
library(data.table)
temp <- melt(setDT(df[-1]))
temp[, which(!value %in% seq_len(5)), variable]
#    variable V1
# 1:     ea03  1
# 2:     ea04  3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接