Я объединяю два фрейма данных, у которых есть несколько перекрывающихся наблюдений. Эти наблюдения не перекрывают все столбцы, поэтому они не идентичны, но они одинаковы для столбцов, которые, как я решил, важны для связи. Как объединить / объединить так, чтобы сопоставленные наблюдения были исключены?
Я знаком с различными функциями соединения и с тем, как выполнять внутренние и внешние объединения, используя merge()
, но я не вижу опции для исключения строк, которые составляли бы внутреннее соединение.
Это похожий вопрос по теме, Exclusive Full Join in r
но предполагается, что в каждом кадре данных есть разные столбцы, которые будут создавать NA при полном объединении. Как бы вы это сделали, если бы кадры данных имели одинаковые столбцы?
Обходной путь, который я использую, заключается в использовании duplicated()
от первого и последнего для удаления строк после полного объединения. Есть ли более элегантный способ получить дополнение внутреннего соединения?
df_joined <- merge(df1, df2, all = TRUE)
df_joined <- subset(df_joined, !(duplicated(df_joined[
,linking_cols])==TRUE | duplicated(df_joined[ ,linking_cols], fromLast =
TRUE)==TRUE))