假设我有两列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
匹配,但似乎应该有更好的解决方案。
答案 0 :(得分:1)
你有合适的工具。你刚才没有正确使用它。 ==
将匹配单个值。如果要将一个向量与另一个向量匹配,请使用match
或which
与%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