合并用 R 排序不同的表

fre*_*eya 3 r merging-data dataframe

我有2张大桌子。一个带有标识符(未排序),另一个带有标识符列表(包含第一个表中的所有内容)以及一个变量的关联值。我想在我的第一个表中添加一列,其中包含第二个表中的关联值。有没有一种聪明的方法来使用 R 的已实现功能?

IE

table 1
id
8979786
62782
6268768
6776566

table 2
id        var
1          5
2          2
3          NA
…
9999999    6
Run Code Online (Sandbox Code Playgroud)

结果应该是

table1
id       var
8979786   5
62782     NA
6268768   7
4776566   4
Run Code Online (Sandbox Code Playgroud)

提前致谢

Cha*_*ase 5

所以该id列在两个表中?你可以merge把它们放在一起:merge(table1, table2, sort = FALSE)。有许多合并选项可供探索,可让您模拟不同类型的联接,类似于 SQL 中的内联接、左联接、右联接和外联接。我在sort这里添加了附加参数以保留 table1 的原始顺序。

如果表 1 中有 id 而表 2 中没有,并且您想为这些显示 NA,请将其添加all.x = TRUE为参数。这相当于左连接。all.y是右连接,all = TRUE相当于全外连接。

可重现的例子:

> set.seed(1)
> table1 <- data.frame( id = sample(1:5, 5, FALSE))
> table1
  id
1  2
2  5
3  4
4  3
5  1
> table2 <- data.frame( id = 1:5, var = rnorm(5))
> table2
  id        var
1  1  1.2724293
2  2  0.4146414
3  3 -1.5399500
4  4 -0.9285670
5  5 -0.2947204
> merge(table1, table2, sort = FALSE)
  id        var
1  2  0.4146414
2  5 -0.2947204
3  4 -0.9285670
4  3 -1.5399500
5  1  1.2724293
Run Code Online (Sandbox Code Playgroud)