Re: [R-es] Pasar palabras de una lista a una variable del dataframe

2018-05-23 Por tema Carlos Ortega
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
> >>
> >
> >
> >
> 

Re: [R-es] Pasar palabras de una lista a una variable del dataframe

2018-05-23 Por tema JCMld
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
>>
>
>
>
> --
> Saludos,
> Carlos Ortega
> www.qualityexcellence.es
>

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es

___
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es