I have the following tables : DF1
var1 var2 var3 Ars_0 Ars_1 Ars_2 Ars_3 Ars_4 Ars_5 Ars_6 Ars_7
x y1 z1 1.000 1.000 1.000 1.000 1.000 1.000 1.000 0.000
x y2 z1 1.000 1.000 1.000 1.000 1.000 1.000 1.000 0.000
x y1 z2 1.000 1.000 1.000 1.000 1.000 1.000 1.000 0.000
x y2 z2 1.000 1.000 1.000 1.000 1.000 1.000 1.000 0.000
y y1 z1 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
y y2 z1 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
y y1 z2 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
y y2 z2 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
z y1 z1 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
z y2 z1 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
z y1 z2 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
z y2 z2 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
DF2
var1 var2 var3 Ars_0 Ars_1 Ars_2 Ars_3 Ars_4 Ars_5 Ars_6
x y1 z1 0.935 0.065 0.000 0.000 0.000 0.000 0.000
x y2 z1 1.000 0.000 0.000 0.000 0.000 0.000 0.000
x y1 z2 0.146 0.000 0.854 0.000 0.000 0.000 0.000
x y2 z2 0.520 0.377 0.103 0.000 0.000 0.000 0.000
y y1 z1 0.939 0.060 0.000 0.001 0.000 0.000 0.000
y y2 z1 0.987 0.013 0.000 0.000 0.000 0.000 0.000
y y1 z2 0.175 0.052 0.773 0.000 0.000 0.000 0.000
y y2 z2 0.000 0.000 1.000 0.000 0.000 0.000 0.000
z y1 z1 0.948 0.052 0.000 0.000 0.000 0.000 0.000
z y2 z1 0.981 0.019 0.000 0.000 0.000 0.000 0.000
I want all rows from DF2 and rows which does not exist in DF2 but exist in DF1 (based on var1, var2 and var3). If a column does not exist, the whole column should be fetched. For e.g. Ars_7 exist in DF1 but not exist in DF2 so whole could be added in the final output.
Desired Output
var1 var2 var3 Ars_0 Ars_1 Ars_2 Ars_3 Ars_4 Ars_5 Ars_6 Ars_7
x y1 z1 0.935 0.065 0.000 0.000 0.000 0.000 0.000 0.000
x y2 z1 1.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000
x y1 z2 0.146 0.000 0.854 0.000 0.000 0.000 0.000 0.000
x y2 z2 0.520 0.377 0.103 0.000 0.000 0.000 0.000 0.000
y y1 z1 0.939 0.060 0.000 0.001 0.000 0.000 0.000 1.000
y y2 z1 0.987 0.013 0.000 0.000 0.000 0.000 0.000 1.000
y y1 z2 0.175 0.052 0.773 0.000 0.000 0.000 0.000 1.000
y y2 z2 0.000 0.000 1.000 0.000 0.000 0.000 0.000 1.000
z y1 z1 0.948 0.052 0.000 0.000 0.000 0.000 0.000 1.000
z y2 z1 0.981 0.019 0.000 0.000 0.000 0.000 0.000 1.000
z y1 z2 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
z y2 z2 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
R Code
x1 <- read.table(header = TRUE,
text='var1 var2 var3 Ars_0 Ars_1 Ars_2 Ars_3 Ars_4 Ars_5 Ars_6
x y1 z1 0.935 0.065 0.000 0.000 0.000 0.000 0.000
x y2 z1 1.000 0.000 0.000 0.000 0.000 0.000 0.000
x y1 z2 0.146 0.000 0.854 0.000 0.000 0.000 0.000
x y2 z2 0.520 0.377 0.103 0.000 0.000 0.000 0.000
y y1 z1 0.939 0.060 0.000 0.001 0.000 0.000 0.000
y y2 z1 0.987 0.013 0.000 0.000 0.000 0.000 0.000
y y1 z2 0.175 0.052 0.773 0.000 0.000 0.000 0.000
y y2 z2 0.000 0.000 1.000 0.000 0.000 0.000 0.000
z y1 z1 0.948 0.052 0.000 0.000 0.000 0.000 0.000
z y2 z1 0.981 0.019 0.000 0.000 0.000 0.000 0.000
')
x2 <- read.table(header = TRUE,
text='var1 var2 var3 Ars_0 Ars_1 Ars_2 Ars_3 Ars_4 Ars_5 Ars_6 Ars_7
x y1 z1 1.000 1.000 1.000 1.000 1.000 1.000 1.000 0.000
x y2 z1 1.000 1.000 1.000 1.000 1.000 1.000 1.000 0.000
x y1 z2 1.000 1.000 1.000 1.000 1.000 1.000 1.000 0.000
x y2 z2 1.000 1.000 1.000 1.000 1.000 1.000 1.000 0.000
y y1 z1 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
y y2 z1 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
y y1 z2 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
y y2 z2 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
z y1 z1 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
z y2 z1 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
z y1 z2 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
z y2 z2 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
')
merge(x1, x2, all=TRUE)
– JdeMello