Rのデータフレームに対してSQLのUNIONとINTERSECTを実行する。

タイトルのまんまの問題で恐ろしくはまって自作関数をつくろうとしていたので、メモ

参考:R help - union of two data frames
http://r.789695.n4.nabble.com/union-of-two-data-frames-td848979.html

#2つの異なるデータフレームを作成する
df1 <- data.frame(a = 1:10, b = 11:20)
df2 <- data.frame(a = c(1:2,98),  b = c(11:12, 99))

#df1
# a  b
# 1   1 11
# 2   2 12
# 3   3 13
# 4   4 14
# 5   5 15
# 6   6 16
# 7   7 17
# 8   8 18
# 9   9 19
# 10 10 20

#df2
# a  b
# 1  1 11
# 2  2 12
# 3 98 99

#(1,11)(2,12)が重複している

#UNIONに相当する計算
merge(df1, df2, all = TRUE)
# a  b
# 1   1 11
# 2   2 12
# 3   3 13
# 4   4 14
# 5   5 15
# 6   6 16
# 7   7 17
# 8   8 18
# 9   9 19
# 10 10 20
# 11 98 99

#INTERSECTに相当する計算
merge(df1, df2, all = FALSE)
# a  b
# 1 1 11
# 2 2 12