如果列中的值包含字符串列表r中的元素,则返回True或False



我想检查列值和字符串列表之间是否存在紧密匹配。很少有完美的匹配,所以%中的%并不好。我宁愿谨慎而不愿错过一些东西,但是我宁愿避免在每个单独的单词

中匹配潜在的模式。例如

列表:

Tenis PLC
Green Company Limited
(DCC) Darth Company Creditors

Dataframe

ID.  Company Name
10.  Ten LTD
12.  Green Company (GC) LTD
23   MCC
48.  DARTH

返回
False
True
False
True
编辑:我应该提一下,我现在已经清理了一些数据,使其全部小写,并删除任何括号

再生你的数据:

l = list(tolower(c('Tenis PLC',
'Green Company Limited',
'(DCC) Darth Company Creditors')))
tmp_df = data.frame(Company_Name=c(tolower(c('Ten LTD', 'Green Company (GC) LTD', 'MCC',
'DARTH'))))

解决方案:

  1. 获取所有被空格分割的子字符串:
split1 = unlist(strsplit(unlist(l), ' '))
  1. 查找Company_name中的任何值是否包含它们(假设这就是您的意思):
sapply(tmp_df$Company_Name,
function(x) {sum(unlist(strsplit(x, ' ')) %in% split1) >= 1})
编辑:

split1中保留至少3个字符的项目:

split1[sapply(split1, nchar) > 3]

相关内容

  • 没有找到相关文章

最新更新