如何根据R中另一个数据帧中的匹配值转换值?

时间:2018-10-19 19:19:54

标签: r dataframe transform

我有2个数据框,其中的一列具有相同类型的值,如下所示:

a <- c(1, 2, 3, 4)
b <- c("John", "James", "James", "John")
df1 <- data.frame(a, b)
c <- c("John", "James")
d <- c("A", "B")
df2 <- data.frame(c, d)

df1中,我想使用JohnJamesA变成Bdf2,这表明{ {1}}与John一起使用,而AJames一起使用。因此,df1应该如下所示:

B

我尝试使用以下代码,但不起作用:

a   b
1   A           
2   B           
3   B           
4   A

2 个答案:

答案 0 :(得分:1)

我有dplyr的ticket解决方案。它通过匹配left_join()df1$b中的值来连接两个data.frame:

df2$c

输出:

library(dplyr)

a <- c(1, 2, 3, 4)
b <- c("John", "James", "James", "John")
df1 <- data.frame(a, b)
c <- c("John", "James")
d <- c("A", "B")
df2 <- data.frame(c, d)

left_join(df1, df2, by = c("b" = "c"))

答案 1 :(得分:0)

使用sqldf: 我们可以在join的{​​{1}}列和b的{​​{1}}列上执行df1

c

输出:

df2

OR

要使用sqldf("select d from df1 join df2 on df1.b=df2.c") ,请确保您的联接列应使用相同的名称:

  d
1 A
2 B
3 B
4 A