检查R中的Likert标度的有效值

时间:2014-12-22 11:29:00

标签: r spss

我是 SPSS 用户试图切换到R。

我在数据框中有几个变量(ea01ea06; pre01pre09)。

数据来自调查问卷,采用格式(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

验证程序应该告诉我案例1作为变量ea03中的无效值和变量ea04中的案例3。

如何在R?

中完成

2 个答案:

答案 0 :(得分:5)

你也可以这样做:

indx <- which(df >5 | df < 1,arr.ind=TRUE)
setNames(indx[,1], names(df)[indx[,2]])
#ea03 ea04 
#1    3 

答案 1 :(得分: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