Teilstring stimmt mit zwei Spalten überein R
Ich habe versucht, zwei Spalteninhalte auf der Grundlage einer Liste regulärer Ausdrücke, die für beide Spalten gelten, teilweise abzugleichen:
dats<-data.frame(ID=c(1:3),species=c("dog","cat","rabbit"),
species.descriptor=c("all animal dog","all animal cat","rabbit exotic"),product=c(1,2,3),
product.authorise=c("all animal dog cat rabbit","cat horse pig","dog cat"))
it dem Ziel, dies zu erreiche
goal<-data.frame(ID=c(1:3),species=c("dog","cat","rabbit"),
species.descriptor=c("all animal dog","all animal cat","rabbit exotic"),
product=c(1,2,3),product.authorise=c("all animal dog cat rabbit","cat horse pig",
"dog cat"), authorised=c("TRUE","TRUE","FALSE"))
Um dies weiter zu erläutern: Wenn in beiden Spalten an irgendeiner Stelle "Hund" erscheint, wird dies in "$ match" als "TRUE" gewertet. Dies gilt für jeden einzelnen Spezies-Deskriptor entweder FALSE oder ein na wäre in Ordnung.
So weit bin ich gekommen:
library(stringr)
patts<-c("dog","cat","all animal")
reg.patts<-paste(patts,collapse="|")
dats$matched<-ifelse((str_extract(dats$species.descriptor,reg.patts) == str_extract(dats$product.authorise,reg.patts)),"TRUE","FALSE")
dats
ID species species.descriptor product product.authorise matched
1 dog all animal dog 1 all animal dog cat rabbit TRUE
2 cat all animal cat 2 cat horse pig FALSE
3 rabbit rabbit exotic 3 dog cat <NA>
Wie Sie sehen können, werden die erste und die letzte Zeile korrekt identifiziert, da in beiden Zeichenfolgen "all animal" an erster Stelle steht und in der letzten Zeile überhaupt keine Übereinstimmung vorliegt. Es scheint jedoch zu kämpfen (wie in der zweiten Reihe), wenn die Reg-Exp nicht zuerst in der Zeichenfolge angezeigt wird. Ich habe str_extract_all ausprobiert, aber bisher nur Fehlermeldungen ausgegeben. Ich habe mich gefragt, ob jemand helfen kann, bitte?