检查其他参考数据框中是否存在值

时间:2020-07-28 02:20:28

标签: r dataframe data-wrangling

我有下面的玩具数据集,它代表了更大的数据。但是,这些是重要的列。我正在尝试检查Dataframe中的值是否与参考数据帧Reference_AReference_BReference_C相匹配。

DataFrame

group   type    value
x       A       Teddy
x       A       William
x       A       Lars
y       B       Robert
y       B       Elsie
y       C       Maeve
y       C       Charlotte
y       C       Bernard


Reference_A

type    value
A       Teddy
A       William
A       Lars

Reference_B

type    value
B       Elsie
B       Dolores

Reference_C

type    value
C       Maeve
C       Hale
C       Bernard

所需的输出:

group   type    value      check
x       A       Teddy      TRUE
x       A       William    TRUE
x       A       Lars       TRUE
y       B       Robert     FALSE
y       B       Elsie      TRUE
y       C       Maeve      TRUE
y       C       Charlotte  FALSE
y       C       Bernard    TRUE

我在这里发布了类似的问题,但是意识到TRUEFALSE可能更有效地检查:Check if values of one dataframe exist in another dataframe in exact order。我认为顺序无关紧要,因为我可以操纵数据以使所有值都是唯一的。

1 个答案:

答案 0 :(得分:0)

您可以将“参考”数据帧合并为一个数据帧,并按DataFrametype进行连接,对于每个typevalue,您可以然后检查{{ 1}} any个匹配项。

value

数据

library(dplyr)

mget(paste0('Reference_', c('A', 'B', 'C'))) %>%
   bind_rows() %>%
   right_join(DataFrame, by = 'type') %>%
   group_by(group, type, value = value.y) %>%
   summarise(check = any(value.x == value.y))


#  group type  value     check
#  <chr> <chr> <chr>     <lgl>
#1 x     A     Lars      TRUE 
#2 x     A     Teddy     TRUE 
#3 x     A     William   TRUE 
#4 y     B     Elsie     TRUE 
#5 y     B     Robert    FALSE
#6 y     C     Bernard   TRUE 
#7 y     C     Charlotte FALSE
#8 y     C     Maeve     TRUE 
相关问题