假设我在df1中包含一个特定的值x(唯一)。我想将此值x(唯一)与df2中包含的值x(唯一)进行匹配,以获得对应的值“ date”。问题在于df1和df2具有两个不同的行长,因此以下功能将无法正常工作:
match(df1$x,df2$x)
df2$date[match(df1$x,df2$x)]
df1$date = df2$date[match(df1$x,df2$x)]
示例df1和df2:
df1->
x | y | a | b |
1 2 6 9
2 2 7 2
3 4 8 1
4 5 7 2
df2->
x | z | date | l | m |
1 2 1987 a c
2 2 1989 b c
3 2 1986 a d
最终结果示例: df1->
x | y | date
1 2 1987
2 2 1989
3 2 1986
答案 0 :(得分:0)
像df1$date[df1$date %in% df2$date]
这样的东西会起作用吗?
评论后编辑
我明白了。现在我明白了。
library(dplyr)
df1 <- data.frame(x = 1:4, y = rep(c(2,4), each=2))
df2 <- data.frame(x = 1:3, z = c(2,2,2), date = 1986:1988)
inner_join(df1, df2, by = c("x")) %>%
select(-z)
#> x y date
#> 1 1 2 1986
#> 2 2 2 1987
#> 3 3 4 1988
由reprex package(v0.2.1)于2019-04-25创建