Mira estos ejemplos:
> library(stringr)
> dataset <- c("corn", "cornmeal", "corn on the cob", "meal")
> my_data <- c('corn', 'corn on')
>
> # for mere occurences of the pattern:
> str_count(dataset, "corn on")
[1] 0 0 1 0
> # [1] 1 1 1 0
>
> # for occurences of the word alone:
> str_count(dataset, "\\bcorn\\b")
[1] 1 0 1 0
> # [1] 1 0 1 0
>
> # summing it up
> sum(str_count(dataset, "corn"))
[1] 3
>
> str_count(dataset, my_data)
[1] 1 0 1 0
>
Que son una adaptación de lo que se cuenta aquí:
https://stackoverflow.com/questions/7782113/count-word-occurrences-in-r
Si no es exactamente, entonces ya haría falta que pusieras varios ejemplos
de lo que esperas por contemplar todas las variantes que existen con tus
datos y que quieres detectar.
Gracias,
Carlos.
El 23 de mayo de 2018, 8:42, JCMld escribió:
> Hola,
>
> Se me ocurre lo siguiente, no sé si es lo que buscas.
>
> Supongamos que tienes la lista de palabras a cotejar en p y en t el las
> variables de texto donde quieres saber en cada una cuántas palabras de p
> aparecen. Si hacemos:
>
>
> p<-c("perro","gato","pez")
> t<-c("un perro","un perro y un gato y otro perro","un gato y un pez","un
> perro-gato y un pez")
>
> unlist(lapply(t,function(s) sum(unlist(lapply(p,function(x)
> length(grep(x,s)))
>
> obtenemos
> [1] 1 2 2 3
>
> Es decir, en t[1] aparece 1 de las palabras (perro), en t[2] aparecen 2
> (perro y gato), en t[3] 2 (gato y pez) y en t[4] las 3.
> Si los textos los tienes en una variable de un data.frame entonces deberás
> sustituirlo por tu la columna del data frame, algo del estilo df$texto, en
> el código.
>
> Saludos,
> Juan Carmona.
>
>
> -Mensaje original-
> De: R-help-es [mailto:r-help-es-boun...@r-project.org] En nombre de
> miriam.alz...@unavarra.es
> Enviado el: miércoles, 23 de mayo de 2018 2:29
> Para: Carlos Ortega
> CC: r-help-es
> Asunto: Re: [R-es] Pasar palabras de una lista a una variable del dataframe
>
> Muchas gracias Carlos,
>
> Me da error al hacerlo. Mi variable donde quiero que localice las palabras
> de la lista tiene más de una palabra, no se si puede ser por eso.
>
> Gracias
> El Mar, 22 de Mayo de 2018, 20:15, Carlos Ortega escribió:
> > Hola,
> >
> > Aquí tienes un ejemplo (reproducible)...
> >
> > #---
> >> # Generar nombres de mujer
> >> library(randNames)
> >> val_tmp <- rand_names(1000, nationality = 'ES', gender = 'female')
> >> head(val_tmp)
> > # A tibble: 6 x 25
> > gender email dob registered phone cell nat name.title
> > name.first name.last location.street location.city location.state
> >
> >
> > 1 female angeles.… 1958-0… 2004-05-06 … 932-2… 683-… ESms
> > angelesvega 3550 calle del … lugo cataluña
> > 2 female esther.s… 1947-0… 2004-04-16 … 982-5… 674-… ESmrs
> > esther santos9690 calle de l… toledoislas baleares
> > 3 female eva.parr… 1967-0… 2013-04-02 … 902-3… 644-… ESmiss eva
> > parra 2484 calle de t… la palma melilla
> > 4 female sandra.p… 1957-0… 2005-03-28 … 919-8… 642-… ESms
> > sandra prieto9084 calle de á… parla castilla y le…
> > 5 female veronica… 1952-0… 2004-03-20 … 959-4… 609-… ESmrs
> > veronica moreno9672 calle del … elche la rioja
> > 6 female alejandr… 1973-0… 2005-03-28 … 907-9… 680-… ESmiss
> > alejandra saez 1507 calle de p… san sebastián castilla la m…
> > # ... with 12 more variables: location.postcode , login.username
> > , login.password , login.salt , login.md5 ,
> > # login.sha1 , login.sha256 , id.name , id.value ,
> > picture.large , picture.medium ,
> > # picture.thumbnail
> >> val_end <- val_tmp$name.first
> >>
> >> # Como ejemplo elijo los 10 primeros de esos nombres.
> >> my_lista <- val_end[1:10]
> >> my_lista
> > [1] "angeles" "esther""eva" "sandra""veronica"
> > "alejandra" "irene" "lidia" "vanesa""mercedes"
> >>
> >> # Hago efectiva la comparación.
> >> library(stringr)
> >> res_coincide <- str_match_all(val_end, my_lista)
> >> res_end <- table(unlist(res_coincide))
> >> res_end
> >
> > alejandra angelesesther eva irene lidia mercedes
> > sandravanesa veronica
> > 2 3 3 1 2 1 1
> >3 2 1
> >>
> > #---
> >
> >
> > Gracias,
> > Carlos.
> >
> > El 22 de mayo de 2018, 18:45, Miriam Alzate
> > escribió:
> >
> >> Buenas tardes,
> >>
> >> Tengo una lista de 600 palabras. Quiero saber cuántas de esas palabras
> >> aparecen en cada observación de mi variable "texto". La variable "texto"
> >> es
> >> de tipo caracter. ¿Cómo lo haríais?
> >>
> >> Muchas gracias.
> >>
> >> ___
> >> R-help-es mailing list
> >> R-help-es@r-project.org
> >> https://stat.ethz.ch/mailman/listinfo/r-help-es
> >>
> >
> >
> >
>