使用 R 合并不同排序的表
我有两张大桌子。一个包含标识符(未排序),另一个包含标识符列表(包含第一个表中的所有标识符)以及一个变量的关联值。 我想向第一个表添加一列,其中包含第二个表中的关联值。有没有一种聪明的方法来继续使用 R 的实现功能?
即
table 1
id
8979786
62782
6268768
6776566
table 2
id var
1 5
2 2
3 NA
…
9999999 6
结果应该是
table1
id var
8979786 5
62782 NA
6268768 7
4776566 4
提前感谢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
那么
id
列在两个表中都存在吗?您可以将它们合并
在一起:merge(table1, table2, sort = FALSE)
。有很多合并选项可供探索,可让您模拟不同类型的联接,类似于 SQL 中的内联接、左联接、右联接和外联接。我在此处添加了附加参数sort
以保留 table1 的原始顺序。如果表 1 中有 id,但表 2 中没有,并且您想要显示这些 NA,请添加
all.x = TRUE
作为参数。这相当于左连接。all.y
是右连接,all = TRUE
相当于完全外连接。可重现的例子:
So the
id
column is in both tables? You canmerge
them together:merge(table1, table2, sort = FALSE)
. There are lots of options to explore for merge that let you emulate different types of joins, similar to inner, left, right, and outer joins in SQL. I added the additional parametersort
here to preserve the original order of table1.If there are ids in table1 but not table 2 and you want to show NAs for those, add
all.x = TRUE
as a parameter. This is equivalent to a left join.all.y
is a right join, andall = TRUE
is equivalent to a full outer join.Reproducible example:
这是一种 data.table 方法,以防数据很大且速度成为问题。更多信息请参考
?data.table
的帮助页面:请注意,我对 Chase 提供的示例数据进行了一些调整,以使
data.table
中的匹配的某些点更加明显:强制性速度测试:
以及我通常的免责声明: 我仍在学习很多东西以及有关此软件包的信息,因此您可以在软件包主页找到更多信息。
Here is a data.table way of doing this, in case the data is big and speed is an issue. For more information, refer to the help page of
?data.table
:Note that I adjusted the sample data provided by Chase a little to make certain points about the matching in
data.table
more obvious:The obligatory speed test:
And my usual disclaimer: I'm still learning a lot about this package as well, so you find better information at the package homepage.
我刚刚实现了一个解决此问题的函数(合并两个 data.frame 对象,同时保持两个对象之一的顺序),您可以在此处查看其使用的代码和示例:
http://www.r-statistics.com/2012/01/merging-two-data-frame-objects-while-preserving-the-rows-order/
I just implemented a function that solves this issue (of merging two data.frame objects while keeping the order to be by one of the two objects), you can see the code and examples for its use here:
http://www.r-statistics.com/2012/01/merging-two-data-frame-objects-while-preserving-the-rows-order/