我有一个包含这些变量的大数据框
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
答案 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))