巧妙地将一个数据帧中的元素与另一个数据帧中的元素相匹配?

时间:2012-08-03 16:24:23

标签: r indexing dataframe match

假设我有两列x = c("a", "c", "g")y = c("a", "b", "c", "d", "e", "f", "g")

x是dataframe1中的列,y是数据帧2中的列.dataframe1不一定与维度中的数据帧2匹配。

我想返回包含x的y行。例如,我想获得1,3,7。

我尝试过像items = which(dataframe1$x == dataframe2$y)这样笨拙的事情,但显然这不起作用。我知道我可以循环浏览dataframe1$x并将其与dataframe2$y匹配,但似乎应该有更好的解决方案。

1 个答案:

答案 0 :(得分:1)

你有合适的工具。你刚才没有正确使用它。 ==将匹配单个值。如果要将一个向量与另一个向量匹配,请使用matchwhich%in%(以及==)。

示例:

df1 <- data.frame(x = c("a", "c", "g"))
df2 <- data.frame(y = letters[1:7])
match(df1$x, df2$y)
# [1] 1 3 7
which(df2$y %in% df1$x)
# [1] 1 3 7