Я хотел бы объединить / объединить два фрейма данных, но игнорируя сходства в строках и столбцах результирующего фрейма данных.Рассмотрим следующий пример:
df1 <- data.frame(
id = c("a","b","c"),
a = runif(3,1,9),
b = runif(3,1,9)
)
df2 <- data.frame(
df1[1:2,],
c = runif(2,1,9)
)
В результате получается два фрейма данных, которые имеют ровно четыре ячейки общего (не считая id
), поэтому df1[1:2,2:3] == df2[1:2,2:3]
.Однако они отличаются тем, что df1
в качестве дополнительной строки и df2
имеет дополнительный столбец:
> print(df1)
id a b
1 a 6.396168 4.037320
2 b 4.119025 8.181253
3 c 5.608775 4.219469
> print(df2)
id a b c
1 a 6.396168 4.037320 2.444122
2 b 4.119025 8.181253 6.444280
Я хочу, чтобы новый фрейм данных состоял из симметричных разностей между этими двумя, поэтому нет дубликатов в строках или столбцах.Ближайший результат, которого я достиг, - это использование dplyr::full_join(df1, df2, by = "id")
, но это приводит к дублированию столбцов.
Результат должен выглядеть следующим образом:
id a b c
1 a 6.396168 4.037320 2.444122
2 b 4.119025 8.181253 6.444280
3 c 5.608775 4.219469 NA
Каков наилучший способ достижения этого динамически?Спасибо