【问题标题】:Fund ID comparisons across dataframes in R [duplicate]R中跨数据框的基金ID比较[重复]
【发布时间】:2022-01-09 02:00:27
【问题描述】:

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

Company ID
A 123
B 456
C 789

Company ID
B 453
A 123
C 789

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

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

我认为它一定是 sapply 的一些嵌套变体,但对于我的一生,我无法弄清楚语法是什么(因为公司将位于不同的行)。

【问题讨论】:

标签: r dataframe validation dplyr


【解决方案1】:

我认为带有比较的连接在这里效果很好。

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

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

【讨论】:

  • 这个规模很好,但是如果超过2个表就不行了
猜你喜欢
  • 2019-04-15
  • 1970-01-01
  • 1970-01-01
  • 2016-05-24
  • 2022-11-10
  • 2015-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多