У меня есть проблема с соединением, с которой я борюсь, потому что идентификаторы соединений, которые я хочу использовать для отдельных фреймов данных, распределены по трем возможным столбцам идентификаторов. Я хотел бы иметь возможность присоединиться, если хотя бы один идентификатор присоединения соответствует. Я знаю, что функции _join и merge принимают вектор имен столбцов, но возможно ли сделать эту работу условно?
Например, если у меня есть следующие два фрейма данных:
df_A <- data.frame(dta = c("FOO", "BAR", "GOO"),
id1 = c("abc", "", "bcd"),
id2 = c("", "", "xyz"),
id3 = c("def", "fgh", ""), stringsAsFactors = F)
df_B <- data.frame(dta = c("FUU", "PAR", "KOO"),
id1 = c("abc", "", ""),
id2 = c("", "xyz", "zzz"),
id3 = c("", "", ""), stringsAsFactors = F)
> df_A
dta id1 id2 id3
1 FOO abc def
2 BAR fgh
3 GOO bcd xyz
> df_B
dta id1 id2 id3
1 FUU abc
2 PAR xyz
3 KOO zzz
Я надеюсь, что в итоге получится что-то вроде этого:
dta.x dta.y id1 id2 id3
1 FOO FUU abc "" def [matched on id1]
2 BAR "" "" "" fgh [unmatched]
3 GOO PAR bcd xyz "" [matched on id2]
4 KOO "" "" zzz "" [unmatched]
Таким образом, сохраняются несопоставленные переменные dta1 и dta1, но там, где есть совпадение (строка 1 + 3 выше), оба dta1 и dta2 объединяются в новомТаблица. У меня есть ощущение, что ни _join, ни merge, ни match не будут работать как есть, и мне нужно написать функцию, но я не уверен, с чего начать. Любая помощь или идеи приветствуются. Спасибо