代码之家  ›  专栏  ›  技术社区  ›  toastienf

R中数据帧之间的基金ID比较

  •  0
  • toastienf  · 技术社区  · 4 年前

    我正在编写一份报告,比较基金ID,以发现数据帧之间(公司名称、ID)配对之间的任何差异。下表:

    公司 身份证件
    a. 123
    b 456
    c 789

    公司 身份证件
    b 453
    a. 123
    c 789

    在这种情况下,理想情况下,有一些函数可以读取每个公司名称,识别每个相应的ID,然后从下一个表中找到具有相应ID的相同公司名称。如果它们是相同的值,我假设它会返回TRUE,如果不同,则返回FALSE。

    在上面的例子中,它将返回TRUE、FALSE、TRUE,因为唯一的差异是与公司B的差异。

    我想它一定是的嵌套变体 sapply 但就我而言,我不知道语法会是什么(因为公司会在不同的行上)。

    0 回复  |  直到 4 年前
        1
  •  3
  •   Joe Erinjeri    4 年前

    我认为加入比较在这里效果很好。

    library(dplyr)
    
    df_x<-tibble::tribble(
           ~Company,  ~ID,
                "A", 123L,
                "B", 456L,
                "C", 789L
           )
    
    df_y<-tibble::tribble(
           ~Company,  ~ID,
                "B", 453L,
                "A", 123L,
                "C", 789L
           )
    
    df_joined<-df_x %>%
      left_join(df_y, by="Company") %>%
      mutate(discrepancy=(ID.x!=ID.y))
    
    df_joined
    
    #> # A tibble: 3 × 4
    #>   Company  ID.x  ID.y discrepancy
    #>   <chr>   <int> <int> <lgl>       
    #> 1 A         123   123 FALSE       
    #> 2 B         456   453 TRUE        
    #> 3 C         789   789 FALSE
    

    创建于2022-01-09由 reprex package (v2.0.1)