首页 > 解决方案 > 当这些数据帧不等长时,如何匹配两个数据帧之间的奇异值?

问题描述

假设我有一个包含在 df1 中的特定值 x(唯一)。我想将此值 x(唯一)与 df2 中包含的值 x(唯一)匹配,以获得对应的值“日期”。问题是 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 

标签: r

解决方案


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 包(v0.2.1)于 2019-04-25 创建


推荐阅读