У моего dataset
есть столбец GeogPreferences
, который содержит несколько строк в одной строке. У меня есть вектор строк region
, который я хочу использовать для поиска в этом столбце. Я создаю новый столбец geog
и если GeogPreferences
содержит любой из строк в geog
, я хочу, чтобы сохранить тот же текст из GeogPreferences
, иначе я просто заменить текст «Все»Новый столбец с использованием grep для поиска строк в существующем столбце в R
Мой пример кода:
myDf <- structure(list(GeogPreferences = structure(1:4, .Label = c("Asia, Central and East Europe, Europe, North America, West Europe, Australia, Belgium, Czech Republic, France, Germany, India, Italy, Luxembourg, Netherlands, Poland, Romania, Spain, UK, US",
"Europe, North America, West Europe, US", "Global, North America",
"Northeast, Southeast, West, US"), class = "factor")), .Names = "GeogPreferences", class = "data.frame", row.names = c(NA,
-4L))
region <- c("Northeast","Southeast","West","Midwest","Southwest")
myDf$geog <- ifelse((grepl(paste(region, collapse = "|"), myDf$GeogPreferences)),myDf$GeogPreferences, c("All"))
проблема заключается в том grep
рассматривает строки, как «Западная Европа», чтобы быть в списке region
из-за слова «Запад», и я получаю следующие выходные данные
geog
1
2
All
4
Я ожидаю выход, как:
geog
All
All
All
Northeast, Southeast, West, US
Есть ли способ использовать Grep или любую другую функцию, чтобы получить этот вывод?
'IfElse (grepl (паста (область, коллапс = "|"), myDf $ GeogPreferences), as.character (myDf $ GeogPreferences), "Все") ' – alistaire
Это сработало! Благодаря @alistaire – krish