我是 SPSS 用户试图切换到R。
我在数据框中有几个变量(ea01
到ea06
; pre01
到pre09
)。
数据来自调查问卷,采用格式(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?
中完成答案 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