miri@m@@lz@te m@ili@g off u@@v@rr@@es
2018-May-23 00:29 UTC
[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 >
JCMld
2018-May-23 06:42 UTC
[R-es] Pasar palabras de una lista a una variable del dataframe
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
Carlos Ortega
2018-May-23 12:23 UTC
[R-es] Pasar palabras de una lista a una variable del dataframe
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]]