我有这段代码:
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的结果看起来是这样的:
答案 0 :(得分:0)
我想按字母匹配这两个数据帧
> 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)