在数据框中解析和查找匹配项

时间:2015-10-23 21:52:18

标签: r

我有一个包含这些变量的大数据框

ID    ModelA                    Target Model
1     Striker                   Striker
2     (YZ123)(Y234)             YZ123
3     Boxer                     boxer
4     (Y456)(Y122)(Y444)        (Y456)

我需要创建一个与ModelA和Target Model匹配的新列。

ID    ModelA                    Target Model         Match
1     Striker                   Striker              Striker
2     (YZ123)(Y234)             YZ123                YZ123
3     Boxer                     boxer                Boxer
4     (Y456)(Y122)(Y444)        (Y456)               Y456  

1 个答案:

答案 0 :(得分:0)

在使用paste删除括号后,我们通过gsub第三列的元素创建字符串模式。这可用于从第二列中提取单词。

library(stringr)
pat <- sprintf('(?i)(%s)',paste(gsub('[[:punct:]]+', '', df1[,3]), collapse='|'))
df1$Match <- str_extract(df1[,2], pat)
df1
#  ID             ModelA Target_Model   Match
#1  1            Striker      Striker Striker
#2  2      (YZ123)(Y234)        YZ123   YZ123
#3  3              Boxer        boxer   Boxer
#4  4 (Y456)(Y122)(Y444)       (Y456)    Y456

数据

df1 <- structure(list(ID = 1:4, ModelA = c("Striker", "(YZ123)(Y234)", 
"Boxer", "(Y456)(Y122)(Y444)"), Target_Model = c("Striker", "YZ123", 
"boxer", "(Y456)")), .Names = c("ID", "ModelA", "Target_Model"
), class = "data.frame", row.names = c(NA, -4L))