我有一个包含问卷回复的矩阵,我想做一些基本的模式检查来排除,例如,刚刚在他们的 Scantron 表上填写了锯齿形图案的受访者。我有一个 1400×50(逐项)矩阵datonly
,如下所示:
> head(datonly[,1:10])
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 1 2 4 4 3 4 4 4 4 4
[2,] 1 1 4 NA 5 5 4 4 4 4
[3,] 2 2 2 3 3 3 3 3 3 1
[4,] 3 1 3 2 5 2 3 4 3 4
[5,] 4 2 3 1 5 3 5 5 3 4
[6,] 4 2 4 4 5 1 5 4 4 5
正如你所看到的,里面有NA
s。此外,所有问题的可能有效答案为 1 到 5。
我不知道最有效的方法,但这个矩阵并不大,所以效率不是什么大问题——我只想完成它而不是在这上面徘徊,但我想不通在每一行中检查是否找到模式 1 2 3 4 5 4 3 2 1 的工作方法。我希望函数的输出如下所示:
> which(ind==1)
[1] 24 55 66 67 74 79 83 90 127 131 147
[12] 154 162 172 221 222 248 260 263 316 339 390
[23] 402 408 436 440 456 457 460 492 497 504 526
[34] 544 550 568 583 597 602 623 628 632 639 682
[45] 684 689 705 727 747 750 751 763 764 769 784
其中ind
是一个数字向量,对于不显示此模式的每一行(人),包含 0,对于每行(人),包含 1。在此示例中,我会将受访者 #24、55、66 等标记为可能不好的受访者。顺序确实很重要——否则它看起来不像 Scantron 表上的锯齿形——但模式不一定必须从 1 开始(但是,我可以使用仅检查给定模式的函数以上)。任何帮助深表感谢!