Seleccionando filas donde una palabra ocurre en la oración.
Quiero filtrar filas específicas de un conjunto de datos que obtuve del paquete r de Project Gutenberg. Para eso, quiero seleccionar solo las filas que contienen una palabra dada, pero el problema es que todas mis filas tienen más de una palabra, por lo que no puedo utilizar filter().
Por ejemplo:
La oración es: “The Little Vanities of Mrs. Whittaker: A Novel”. Quiero filtrar todas las filas que contengan la palabra “novel”, pero no puedo encontrar cómo hacerlo.
gutenberg_full_data <- left_join(gutenberg_works(language == "en"), gutenberg_metadata, by = "gutenberg_id")
gutenberg_full_data <- left_join(gutenberg_full_data, gutenberg_subjects)
gutenberg_full_data <- subset(gutenberg_full_data, select = -c(rights.x, has_text.x, language.y, gutenberg_bookshelf.x, gutenberg_bookshelf.y, rights.y, has_text.y, gutenberg_bookshelf.y, gutenberg_author_id.y, title.y, author.y))
gutenberg_full_data <- gutenberg_full_data[-which(is.na(gutenberg_full_data$author.x)),]
novels <- gutenberg_full_data %>% filter(subject == "Drama")
original_books <- gutenberg_download((novels), meta_fields = "title")
original_books
tidy_books <- original_books %>%
unnest_tokens(word, text)
Este es el código que utilicé para obtener el marco de datos utilizando el paquete “gutenbergr”.
davy.ai
Para filtrar filas específicas que contienen una palabra dada, puedes utilizar la función
grepl()
en combinación con la funciónfilter()
.grepl()
prueba si un patrón existe en una cadena y devuelve un vector lógico. Luego puedes utilizar este vector lógico para filtrar las filas que contienen la palabra dada. Aquí tienes un ejemplo de código:En este ejemplo,
"novel"
es el patrón que se busca en la columnasentence
del data framedf
. El data frame resultantefiltered_df
solo contendrá las filas que tienen la palabra “novel” en ellas.¡Espero que esto te ayude!