2016-09-14 118 views
0

我正在使用不同的問卷調查。在例子中,我有一羣參與者,他們只需要填寫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以相同的方式填寫了兩份調查問卷。我如何檢查我的完整數據框?

Regards

+0

你是什麼意思以相同的方式? ID的1和5對QA2,QA3,QA5,QB2,QB3,QB4和QB5有不同的值......是因爲它們都不包含NA?你的例子也不可重現。請使用''dput()'' –

+0

我的意思是它們包含相同的值。 QA是一個問卷,QB是另一個,它們在不同的日子給出,但是或多或少地保持相同的問題。對於id1,即QA1 = 1和QB1 = 1,QA2 = 3和QB2 = 3.etc,對於完整問卷 –

+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 
相關問題