[R-es] Pasar palabras de una lista a una variable del dataframe
Carlos Ortega
cof @ending from qu@lityexcellence@e@
Mie Mayo 23 14:23:48 CEST 2018
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 <jcmld en carmonarocha.com> 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-bounces en r-project.org] En nombre de
> miriam.alzate en 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
> > <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
> > <chr> <chr> <chr> <chr> <chr>
> > 1 female angeles.… 1958-0… 2004-05-06 … 932-2… 683-… ES ms
> > angeles vega 3550 calle del … lugo cataluña
> > 2 female esther.s… 1947-0… 2004-04-16 … 982-5… 674-… ES mrs
> > esther santos 9690 calle de l… toledo islas baleares
> > 3 female eva.parr… 1967-0… 2013-04-02 … 902-3… 644-… ES miss eva
> > parra 2484 calle de t… la palma melilla
> > 4 female sandra.p… 1957-0… 2005-03-28 … 919-8… 642-… ES ms
> > sandra prieto 9084 calle de á… parla castilla y le…
> > 5 female veronica… 1952-0… 2004-03-20 … 959-4… 609-… ES mrs
> > veronica moreno 9672 calle del … elche la rioja
> > 6 female alejandr… 1973-0… 2005-03-28 … 907-9… 680-… ES miss
> > alejandra saez 1507 calle de p… san sebastián castilla la m…
> > # ... with 12 more variables: location.postcode <int>, login.username
> > <chr>, login.password <chr>, login.salt <chr>, login.md5 <chr>,
> > # login.sha1 <chr>, login.sha256 <chr>, id.name <chr>, id.value <chr>,
> > picture.large <chr>, picture.medium <chr>,
> > # picture.thumbnail <chr>
> >> 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 angeles esther eva irene lidia mercedes
> > sandra vanesa veronica
> > 2 3 3 1 2 1 1
> > 3 2 1
> >>
> > #-----------------------
> >
> >
> > Gracias,
> > Carlos.
> >
> > El 22 de mayo de 2018, 18:45, Miriam Alzate <miriam.alzate en unavarra.es>
> > 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 en r-project.org
> >> https://stat.ethz.ch/mailman/listinfo/r-help-es
> >>
> >
> >
> >
> > --
> > Saludos,
> > Carlos Ortega
> > www.qualityexcellence.es
> >
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
>
--
Saludos,
Carlos Ortega
www.qualityexcellence.es
[[alternative HTML version deleted]]
Más información sobre la lista de distribución R-help-es