我有下面的玩具数据集,它代表了更大的数据。但是,这些是重要的列。我正在尝试检查Dataframe
中的值是否与参考数据帧Reference_A
,Reference_B
和Reference_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
我在这里发布了类似的问题,但是意识到TRUE
和FALSE
可能更有效地检查:Check if values of one dataframe exist in another dataframe in exact order。我认为顺序无关紧要,因为我可以操纵数据以使所有值都是唯一的。
答案 0 :(得分:0)
您可以将“参考”数据帧合并为一个数据帧,并按DataFrame
与type
进行连接,对于每个type
和value
,您可以然后检查{{ 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