Filtre linhas com base nas variáveis "começando com" as strings especificadas pelo vetor

Estou tentando filtrar um banco de dados de pacientes com base em códigos ICD9 (diagnóstico) específicos. Eu gostaria de usar um vetor indicando as 3 primeiras cadeias de caracteres dos códigos ICD9.

O banco de dados de exemplo contém 3 variáveis de caracteres para códigos IC9 para cada visita do paciente (var1 a var3).

Abaixo está um exemplo dos dados

patient<-c("a","b","c")
var1<-c("8661", "865","8651")
var2<-c("8651","8674","2866")
var3<-c("2430","3456","9089")

observations<-data_frame(patient,var1,var2,var3)

   patient  var1  var2  var3
1       a  8661  8651  2430
2       b  865   8674  3456
3       c  8651  2866  9089

#diagnosis of interest: all beginning with "866" and "867"
dx<-c("866","867")

filtered_data<- filter(observations, var1 %like% dx | var2 %like% dx | var3 %like% dx)  

Eu tentei várias abordagens, incluindo as funções grep e% like%, como você pode ver acima, mas não consegui fazê-lo funcionar no meu caso. Agradecemos qualquer ajuda que você possa fornecer.

Happy thanksgiving

Albit

questionAnswers(3)

yourAnswerToTheQuestion