-1

可能重复:
在 R 中,如何通过来自另一个 data.frame 的值对 data.frame 进行子集化?

我有两个data.frames。第一个 (df1) 是包含 100 个条目的单列,带有标题 - “名称”。第二个(df2)是一个数据框,其中包含数以万计条目的数百列元数据。df2 的第一列也有标题“名称”。

我只是想通过 df1 中找到的名称子集选择 df2 中的所有元数据。

请帮助这个新手 R 用户。谢谢!

4

1 回答 1

1

您可以将 data.frame 与 %in% 一起使用,但如果您要查找数千个名称,它可能会很慢。

我建议使用 data.table,因为它对索引列进行排序,并且即使有数百万条记录也可以进行几乎瞬时的数据库连接。阅读 data.table 文档以获取更多信息。

假设你有一个大的 data.frame 和一个小的 data.frame:

library(data.table)
big <- data.frame(names=1:5, data=1:5)
small <- data.frame(names=c(1, 3, 6))

将它们变成 data.table 对象并将键列设置为名称。

big <- data.table(big, key='names')
small <- data.table(small, key='names')

现在执行连接。data.table 中的 [] 允许一个 data.table 被另一个 data.table 的键列索引。在这种情况下,我们返回 big 的行也在 small 中,如果 small 中有名称但 big 中没有名称,则会丢失数据。

big[small]
#    names data
# 1:     1    1
# 2:     3    3
# 3:     6   NA
于 2012-12-07T00:08:54.900 回答