Вы можете использовать grepl
и ifelse
следующим образом:
example$Flag <- ifelse(grepl(paste0(example$x, collapse = "|"), example$y), 1, 0)
Используя paste0
, это объединяет example$x
в один шаблон с альтернативами, разделенными |
и имеет grepl
проверить, соответствует ли комплекс шаблонов значениям в example$y
: если совпадение найдено, оператор ifelse
присваивает 1
; если это не так, 0
.
В качестве альтернативы вы можете использовать str_detect
из пакета stringr
: обратите внимание, что порядок, в котором вы присваиваете две переменные функции, имеет значение - вам нужно поместить строки большего размера (т.е. в example$y
) сначала И вам нужно преобразовать обе переменные в символ. С другой стороны, нет необходимости в преобразовании paste0
:
example$Flag <- ifelse(str_detect(as.character(example$y), as.character(example$x)), 1, 0)
Результат:
example
x y Flag
1 hungry i'm hungry 1
2 fly i believe i can fly 1
3 day a hard day's night 1
4 dog cat 0