Fox, John
2017-Jul-01 14:13 UTC
[R] How to replace match words whith colum name of data frame?
Dear ?, I'm sure that there are many ways to do what you want; here's one:> cbind(concept_df, category=+ ifelse(apply( + sapply(chemical_df$chemical, + function(x) grepl(x, concept_df$concept)), + 1, any), + "chemical", "")) concept category 1 butan acid chemical 2 nano diamond particl 3 slurri composit 4 composit ph polis chemical 5 inorgan particl 6 grind liquid 7 liquid formul 8 nanoparticl 9 size abras particl 10 agent malic acid chemical Or, if you're wedded to magrittr:> sapply(chemical_df$chemical,+ function(x) grepl(x, concept_df$concept)) %>% + apply(1, any) %>% + ifelse("chemical", "") %>% + cbind(concept_df, category=.) concept category 1 butan acid chemical 2 nano diamond particl 3 slurri composit 4 composit ph polis chemical 5 inorgan particl 6 grind liquid 7 liquid formul 8 nanoparticl 9 size abras particl 10 agent malic acid chemical I hope this helps, John -------------------------------------- John Fox, Professor Emeritus McMaster University Hamilton, Ontario, Canada Web: socserv.mcmaster.ca/jfox> -----Original Message----- > From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of ? ? > Sent: Saturday, July 1, 2017 3:44 AM > To: r-help at r-project.org > Subject: [R] How to replace match words whith colum name of data frame? > > I have two data frame. I want to use "chemical_df" to match "concept_df > " > > > concept_df <- data.frame(concept=c("butan acid ", "nano diamond > particl", "slurri composit", "composit ph polis", " inorgan particl ", > "grind liquid", "liquid formul", "nanoparticl", "size abras particl", > "agent malic acid")) > > chemical_df <- data.frame(chemical=c("basic", "alkalin", "alkali", > "acid", " ph ", "hss")) > > Here is my match code: > > library(magrittr) > match_df <- NULL > for (i in 1:length(chemical_df$chemical)) { match_df<- > data.frame(category=concept_df[grep(chemical_df$chemical[i], > concept_df$concept), ] ) %>% > rbind(match_df) > } > > But I don't want this result: > concept category > 1 butan acid butan acid > 2 nano diamond particl > 3 slurri composit > 4 composit ph polis composit ph polis > 5 inorgan particl > 6 grind liquid > 7 liquid formul > 8 nanoparticl > 9 size abras particl > 10 agent malic acid agent malic acid > > I desire to get : > concept category > 1 butan acid chemical > 2 nano diamond particl > 3 slurri composit > 4 composit ph polis chemical > 5 inorgan particl > 6 grind liquid > 7 liquid formul > 8 nanoparticl > 9 size abras particl > 10 agent malic acid chemical > > Is any way to solve it? > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting- > guide.html > and provide commented, minimal, self-contained, reproducible code.