0

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

x 是 dataframe1 中的一列, y 是 dataframe 2 中的一列。 dataframe1 在维度上不一定与 dataframe 2 匹配。

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

我尝试了一些笨拙的东西,items = which(dataframe1$x == dataframe2$y)但显然这不起作用。我知道我可以循环dataframe1$x并匹配它dataframe2$y,但似乎应该有一个更好的解决方案。

4

1 回答 1

1

你有正确的工具。你只是没有正确使用它。==将匹配单个值。当您想将一个向量与另一个向量匹配时,请使用matchor whichwith %in%(而不是with ==)。

例子:

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
于 2013-03-23T18:20:56.440 回答