Проверьте, можно ли найти значение из одного фрейма данных в другом фрейме данных в R - PullRequest
1 голос
/ 09 марта 2020

У меня есть два data.frames следующим образом:

a$id <- as.data.frame(c("1-23-2", "2-3-231-2", "122-121"))

b$id <- as.data.frame(c("1-23-2", "122-121", "12-1223-12", "1221-12"))

Я хочу проверить, можно ли найти все значения a в b.

Я пробовал это:

if (a$id %in% b$id){a$test <- "yes"} else {a$test <- "no"}

К сожалению, выдает предупреждение и неверный результат.

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

У вас может быть несколько базовых подходов R, например,

a <- within(a,test <- ifelse(id %in% b$id,"yes","no"))

или

a <- within(a,test <- c("yes","no")[(!id%in% b$id) + 1])

или

a <- within(a,test <- c("yes","no")[is.na(match(id,b$id))+1])

, таких что

> a
         id test
1    1-23-2  yes
2 2-3-231-2   no
3   122-121  yes

ДАННЫЕ

a <- data.frame(id = c("1-23-2", "2-3-231-2", "122-121"))
b <- data.frame(id = c("1-23-2", "122-121", "12-1223-12", "1221-12"))
0 голосов
/ 09 марта 2020

Использование ifelse.

a$test <- ifelse(a$id %in% b$id, "yeah", "no")
a
#          id test
# 1    1-23-2 yeah
# 2 2-3-231-2   no
# 3   122-121 yeah

Данные

a <- structure(list(id = structure(c(1L, 3L, 2L), .Label = c("1-23-2", 
"122-121", "2-3-231-2"), class = "factor")), class = "data.frame", row.names = c(NA, 
-3L))

b <- structure(list(id = structure(c(1L, 3L, 2L, 4L), .Label = c("1-23-2", 
"12-1223-12", "122-121", "1221-12"), class = "factor")), class = "data.frame", row.names = c(NA, 
-4L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...