[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