Я пытался частично соответствовать два содержимым столбцам на основе списка регулярных выражений, общий для обоего колонок:Частичной строка матч два столбца R
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"))
с целью достижения этой цели:
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"))
Итак, чтобы объяснить, если «собака» появляется в любой точке в обоих столбцах, тогда это будет считаться «ИСТИНА» в $ match - и это применимо для любого индивидуального дескриптора вида. Если совпадений не найдено, то возврат либо FALSE, либо na будет в порядке.
До сих пор я добрался до этой точки:
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>
Как вы можете видеть, это правильно идентифицирует первые и последние ряды как «все животное» появляется первым в обеих строках, и нет матча на все в последнем. Однако, похоже, он работает (как во второй строке), когда reg exp не появляется сначала в строке. Я попытался str_extract_all, но до сих пор приводил к сообщениям об ошибках. Мне было интересно, может ли кто-нибудь помочь, пожалуйста?
Извинения знал, что я что-то забыл! library (stringr) –