如何提供自定义匹配参数以使用R比较代码列表模式?

问题描述 投票:0回答:1

我想比较数据框列的匹配和不匹配。在这里,我在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
r compare pattern-matching matching grepl
1个回答
0
投票

您可以创建子集的索引:

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'))
© www.soinside.com 2019 - 2024. All rights reserved.