我有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
中,我想使用John
将James
和A
变成B
和df2
,这表明{ {1}}与John
一起使用,而A
与James
一起使用。因此,df1应该如下所示:
B
我尝试使用以下代码,但不起作用:
a b
1 A
2 B
3 B
4 A
答案 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