当两个数据帧的长度不相等时,如何匹配两个数据帧的奇异值?

时间:2019-04-25 22:40:32

标签: r

假设我在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 

1 个答案:

答案 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创建