2016-09-14 5 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 заполнены оба анкеты одинаковым образом. Как я могу проверить это для моего полного фрейма данных?

С уважением

+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 
Смежные вопросы