R: Найти, где одна переменная содержит значение другой - PullRequest
0 голосов
/ 03 октября 2018

Работая в R. Я хочу посмотреть на одну переменную, чтобы увидеть, содержит ли она содержимое другой.Это должно быть сделано поэлементно.

df1 <- data.frame(
         FirstName = c("Jon", "Rob", "Phil", "Andy"),
         BusName = c("Jon's Auto", "123 Taxis", "Plumber Phil", "Handy 
Plumbers")

Я перепробовал множество вариантов grep / grepl / match /% в% / sub, но это похоже на сопоставление статической строки с переменной.например,

grep("Jon",df1$BusName) would give me TRUE,FALSE,FALSE,FALSE but 
grep(df1$FirstName, df1$BusNAme) gives an error

Я хочу просмотреть и сравнить их поэлементно, чтобы выходные данные были ИСТИНА, ЛОЖЬ, ИСТИНА, ЛОЖЬ

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

В базе R вы можете использовать mapply и grepl для «векторизации» аргументов:

df1 <- data.frame(
  FirstName = c("Jon", "Rob", "Phil", "Andy"),
  BusName = c("Jon's Auto", "123 Taxis", "Plumber Phil", "Handy Plumbers"),
  stringsAsFactors = FALSE
)

df1$match <- mapply(grepl, df1$FirstName, df1$BusName)
print(df1$match)
#  Jon   Rob  Phil  Andy 
# TRUE FALSE  TRUE FALSE 
0 голосов
/ 03 октября 2018

Мы можем преобразовать столбец шаблона в character.Обратите внимание, что grep не векторизовано для pattern.Использование str_detect

library(stringr)
str_detect(df1$BusName, as.character(df1$FirstName))
#[1]  TRUE FALSE  TRUE FALSE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...