R :Выбор строк из фрейма данных на основе набора значений, представляющих интерес, появляющихся в определенных столбцах

У меня есть большой фрейм данных с записями о визитах к врачу. Я хочу выбрать только те строки, в которых хотя бы один из 11 перечисленных диагностических кодов находится в указанном интересующем меня наборе диагностических кодов.

Фрейм данных состоит из 18 столбцов и 39 019 строк. Меня интересуют диагностические коды в столбцах 6 :16. Вот образец данных только для этих 11 диагностических столбцов (для защиты идентифицируемой информации):

diag1 diag2 diag3 diag4 diag5 diag6 diag7 diag8 diag9 diag10 diag11
786   272   401   782    250  91912  530    NA    NA    NA     NA   
845   530   338   311    NA    NA    NA     NA    NA    NA     NA

Вот код, который я пытался использовать:

mydiag <- c(401, 410, 411, 413, 415:417, 420:429, 434, 435, 444, 445, 451, 460:466, 480:486, 490:493, 496, 786)
y = apply(dt[,paste("diag", 1:11, sep="")], 1, function(x) sum((any(x !=NA %in% mydiag))))
y = as.data.frame(y)

Как вы можете видите, в приведенных мной двух примерных строках я хотел бы сохранить первую строку, но выбросить вторую строку, потому что в ней нет нужных мне кодов. Предоставленный мной пример кода не работает -Я получаю вектор из 39 019 значений "1". Итак, я предполагаю, что оператор применения каким-то образом читается как логический, и все же я точно знаю, что не все строки имеют интересующий код, поэтому в этом случае я ожидал бы 1 и 0.

Есть ли лучший способ выполнить эту задачу выбора строки?

5
задан niton 19 April 2015 в 13:11
поделиться