У меня есть два кадра данных - test
и idx
- моя цель - использовать merge()
или аналогичную функцию для создания условного соединения.
Например, test
имеет идентификаторы с несколькими возможными ключами (и значениями NA в некоторых). Вы не найдете одинаковые ключи для двух отдельных ids
, ключи всегда будут уникальными.
> test
id keyA keyB keyC
1 foo NA 2 10
2 bar 1 NA 6
3 baz 7 NA 4
4 li 8 3 NA
5 qux 9 NA NA
Моя цель - присоединиться к idx
там, где есть совпадения в ключах, например:
> idx
key value
1 2 NA
2 10 NA
3 7 NA
4 4 NA
5 9 NA
Соединение должно вывести:
> idx
key value
1 2 foo
2 10 foo
3 7 bar
4 4 bar
5 9 quz
Я понимаю, как использовать merge
для одного или нескольких столбцов, но не уверен, как его использовать, когда задействован оператор OR
(в этом случае совпадение будет для keyA ИЛИ keyB ИЛИ keyC)
Как можно выполнить это соединение в R?
данные:
dput(test)
structure(list(id = c("foo", "bar", "baz", "li", "qux"), keyA = c(NA,
1, 7, 8, 9), keyB = c(2, NA, NA, 3, NA), keyC = c(10, 6, 4, NA,
NA)), row.names = c(NA, -5L), class = "data.frame")
dput(idx)
structure(list(key = c(2, 10, 7, 4, 9), value = c(NA, NA, NA,
NA, NA)), row.names = c(NA, -5L), class = "data.frame")