Как контролировать качество переменной путем сопоставления с более чем одним наблюдением - PullRequest
0 голосов
/ 29 февраля 2020

У меня есть переменная внутри фрейма данных, которую я хочу контролировать. Переменная перечисляет местоположения (символ). У меня есть другой фрейм данных, который включает в себя все альтернативные имена для того же места. Я хочу получить значение true / false независимо от того, существует ли совпадение между одной переменной в моем фрейме данных и всеми альтернативными именами в отдельном фрейме данных. Есть ли способ сделать это?

т.е. переменная в моем фрейме данных называется FishingGround, которую я хочу контролировать качества:

FishingGround

Lobster Bay
Deep Cove
Китовая Голова

Тогда у моего другого информационного кадра есть все возможные имена для одного и того же местоположения. Поэтому я хочу создать для l oop, который проходит через каждое наблюдение в моей переменной FishingGround и проверяет, соответствует ли оно одному из нескольких перечисленных альтернативных имен.

1 Ответ

1 голос
/ 29 февраля 2020

Мне нравится делать это в качестве справочной таблицы. Вы можете использовать приемлемые имена в качестве names записей и просто искать их. Если имени нет в списке, в результате вы получите NA. Пример:

FishingGround = c("Lobster Bay", "Deep Cove", "Whale Head")

AcceptableNames =  c("Lobster Bay", "Lobster Claw", 
    "Deep Cove", "Shallow Cove", "Whale Tail")
names(AcceptableNames) = AcceptableNames 

AcceptableNames[FishingGround]
  Lobster Bay     Deep Cove          <NA> 
"Lobster Bay"   "Deep Cove"            NA 

NA соответствуют недопустимым записям

## Unacceptable names
FishingGround[which(is.na(AcceptableNames[FishingGround]))]
[1] "Whale Head"

## Acceptable names
FishingGround[which(!is.na(AcceptableNames[FishingGround]))]
[1] "Lobster Bay" "Deep Cove"
...