我正在处理不同的调查问卷。在示例中,我有一群参与者,他们只需要填写3份问卷,其他人必须填写4份,其他6份,以及其他7份。我想评估他们的生活质量,但是有些参与者填写了所有问卷。在同一天(我意识到这在我的分析中引入了一个很大的偏见)。现在我想检查在同一天填写的问卷是否也以相同的方式填写每份调查问卷。这是一个例子:
id QA1 QA2 QA3 QA4 QA5 QA6 QB1 QB2 QB3 QB4 QB5 QB6
1 1 3 2 2 3 3 1 3 2 2 3 3
2 2 NA 2 2 2 1 1 3 2 1 2 3
3 3 2 3 1 1 1 2 1 1 NA 3 NA
4 2 1 NA 3 2 NA 1 3 3 1 2 1
5 1 1 3 2 1 3 1 1 3 2 1 3
在示例中,id 1和5以相同的方式填写了两份问卷。如何查看完整的数据框?
此致
答案 0 :(得分:0)
我认为这可以解决您的问题。它检查每一行并比较响应值:
QAs <- grep('QA', colnames(df)) #which cols contain QA survey questions
QBs <- grep('QB', colnames(df)) #which cols contain QB survey questions
#check if all non-NA values are the same and all NAs are in same location.
check <- function(x){
return( all(all(x[QAs] == x[QBs], na.rm=T), all(is.na(x[QAs]) == is.na(x[QBs])) ) )
}
apply(df, 1, check)
[1] TRUE FALSE FALSE FALSE TRUE