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

JCMld jcmld @ending from c@rmon@roch@@com
Mie Mayo 23 08:42:27 CEST 2018


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



Más información sobre la lista de distribución R-help-es