我想比较数据框列的匹配和不匹配。在这里,我在a列中有代码,在b列中有它们的值。如果列a具有1且列b具有按行排列的男性(1 =男性和2 =女性),我想得到匹配,并且如果给定的代码不满足,同样应该存在不匹配。
如果1 =男性或2 =女性则匹配,否则不匹配
下面是我尝试过的代码,适用于简单模式匹配或精确值匹配,但我希望它与代码列表一起使用
ABData <- data.frame(a = c(1,2,1,1,2),
b = c("Male","Female","Male","Male","Male")
match<- ABData %>% rowwise() %>% filter(grepl(a,b))
mismatch<- ABData %>% rowwise() %>% filter(!grepl(a,b))
预期输出:
Match
a expected actual
1 Male Male
2 Female Female
1 Male Male
1 Male Male
Mismatch
a expected actual
2 Female Male
您可以创建子集的索引:
inds <- with(ABData, a == 1 & b == 'Male' | a == 2 & b == 'Female')
match_df <- subset(ABData, inds)
mismatch_df <- subset(ABData, !inds)
然后我们添加actual
列。
match_df <- transform(match_df, actual = b)
mismatch_df <- transform(mismatch_df, actual = ifelse(b == 'Male','Female', 'Male'))