R - 将来自一个数据帧的值与来自另一个数据帧的多个值进行匹配

时间:2016-03-25 18:10:05

标签: r dataframe

例如,假设我有两个数据框......

d1 <- data.frame(c(a,b,c,d,e,f))
d2 <- data.frame(c(a,a,a,b,b,d,d,d,d,d,e,e,f))

我想在d2中从d1搜索'a'并显示每个匹配值的索引,可以存储在矢量中。

我已经搜索并使用了Match()函数,但只有当只有一个匹配值时,这似乎才有效。

由于

1 个答案:

答案 0 :(得分:1)

要将来自一个数据框的值与来自另一个数据框的多个值匹配,您可以遍历第一个data.frame并获取每个值的第二个数据。

d1 <- data.frame(x = c("a","b","c","d","e","f"), stringsAsFactors = F)
d2 <- data.frame(x = c("a","a","a","b","b","d","d","d","d","d","e","e","f"), stringsAsFactors = F)

sapply(d1$x, function(value) which(d2 == value))
#> $a
#> [1] 1 2 3
#> 
#> $b
#> [1] 4 5
#> 
#> $c
#> integer(0)
#> 
#> $d
#> [1]  6  7  8  9 10
#> 
#> $e
#> [1] 11 12
#> 
#> $f
#> [1] 13