匹配数据帧

时间:2016-12-14 21:19:21

标签: r regex match

我有这段代码:

df1 <- data.frame(letter=c("a", "a", "a", "b", "b", "c", "d", "e"),
              value=c(NA))
df2 <- data.frame(letter=c("a", "b", "g", "f", "d", "e", "a", "b", "a", "c"),
              number=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))

我想逐字母匹配这两个数据框,并将df2中的相应数字返回到df1中的Value列。

所以df1的结果看起来是这样的:

enter image description here

2 个答案:

答案 0 :(得分:0)

  

我想按字母匹配这两个数据帧

这可以通过mergeunique完成:

> df = unique(merge(df1['letter'], df2))
> df
   letter number
1       a      1
2       a      9
3       a      7
10      b      2
11      b      8
14      c     10
15      d      5
16      e      6

-几乎,由于每个字母的数字值可能未按您希望的顺序排序,因此让我们对其进行排序

  

并将df2中的相应数字返回到df1中的“值”列。

> df1$value = df$number[order(df$letter, df$number)]
> df1
  letter value
1      a     1
2      a     7
3      a     9
4      b     2
5      b     8
6      c    10
7      d     5
8      e     6

答案 1 :(得分:-1)

使用join函数查看包dplyr:

library(dplyr)
inner_join(df1, df2) %>%
  distinct(letter, number)