Filtrar filas en función de las cadenas "que comienzan por" variables especificadas por vector

Estoy tratando de filtrar una base de datos de pacientes basada en códigos específicos de ICD9 (diagnóstico). Me gustaría usar un vector que indique las primeras 3 cadenas de los códigos ICD9.

La base de datos de ejemplo contiene 3 variables de caracteres para los códigos IC9 para cada visita del paciente (var1 a var3).

A continuación se muestra un ejemplo de los datos.

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)  

He intentado varios enfoques, incluidas las funciones grep y% like% como puede ver arriba, pero no he podido hacer que funcione para mi caso. Agradecería cualquier ayuda que pueda proporcionar.

Feliz día de gracias

Albit

Respuestas a la pregunta(3)

Su respuesta a la pregunta