【发布时间】:2019-11-19 17:25:35
【问题描述】:
我有以下表格: 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
我想要 DF2 中的所有行以及 DF2 中不存在但存在于 DF1 中的行(基于 var1、var2 和 var3)。如果一列不存在,则应获取整列。例如Ars_7 存在于 DF1 中,但不存在于 DF2 中,因此可以将整体添加到最终输出中。
期望的输出
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 代码
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
')
【问题讨论】:
-
如果您发布所需的输出会很好。我认为您想将 x2 中的所有行与 x1 以及 x1 中与 x2 不匹配的任何行进行匹配。那将是一个完整的加入:
merge(x1, x2, all=TRUE) -
谢谢。我添加了所需的输出。完全连接不会返回所需的输出。它返回 22 行。