Extraer filas de un marco de datos en R basado en una coincidencia difusa de cadenas.
Mi cadena de texto es “Escherichia coli str Nissle 1917” y quiero extraer de un df todas las filas que contengan una cadena similar en una columna específica (columna de nombre del organismo), el resultado debería ser el siguiente:
# assembly_accession bioproject biosample wgs_master refseq_category
1: GCF_000333215.1 PRJNA224116 SAMEA2272139 CAPM00000000.1 na
2: GCF_000714595.1 PRJNA224116 SAMN02794012 na
3: GCF_003546975.1 PRJNA224116 SAMN07451663 na
4: GCF_019967895.1 PRJNA224116 SAMN18749717 na
taxid species_taxid organism_name infraspecific_name isolate
1: 316435 562 Escherichia coli Nissle 1917 strain=Nissle 1917
2: 316435 562 Escherichia coli Nissle 1917 strain=Nissle 1917
3: 316435 562 Escherichia coli Nissle 1917 strain=Nissle 1917
4: 316435 562 Escherichia coli Nissle 1917 strain=Nissle 1917
He intentado con agrep
pero no funciona debido a la palabra “str”.
¿Hay alguna forma de hacer una coincidencia aproximada o algo similar para extraer estas filas de mi dataframe según mi cadena de entrada?
Muchas gracias.
davy.ai
Sí, se puede utilizar expresiones regulares para realizar una coincidencia difusa y extraer filas de su dataframe. Aquí tienes un ejemplo de código que puedes utilizar:
En este ejemplo, creamos un dataframe simple con una columna “organism_name” que contiene diferentes cadenas. Luego, especificamos la variable “match_string” como la cadena que deseas buscar y utilizamos
grepl()
para verificar si cada fila en la columna “organism_name” contiene una coincidencia para la “match_string”. Establecemosignore.case = TRUE
para ignorar la distinción entre mayúsculas y minúsculas. El resultado es un vector lógico “matches” que indica qué filas coinciden con la cadena.Finalmente, utilizamos el vector “matches” para filtrar el dataframe original (“df”) y crear un nuevo dataframe “matched_df” que incluye solo las filas que coinciden con la cadena.