【发布时间】:2020-08-11 01:16:02
【问题描述】:
我有一个由组组成的数据框,其中对应的动物为字符串:
data = data.frame(group = c(1,2,3,4), animal = c("cat, dog, horse, mouse", "cat, dog, horse", "cat, dog,", "cat, dog, frog, cow"))
我想返回最长字符串匹配的组。在此示例中,第 1 组和第 2 组将匹配,因为 4 只动物中有 3 只相同。此外,第 2 组和第 3 组将匹配为 3 只动物中的 2 只匹配。但是,没有与第 4 组匹配的组,因为 4 只动物中只有 2 只匹配。
我想返回一个显示匹配组的数据框:
group_a group_b
1 2
2 3
我不确定这是否可能。我研究了如何匹配部分字符串,但努力寻找类似的例子来适应。有什么想法吗?
谢谢。
【问题讨论】:
-
你能解释一下关于 group_a 和 group_b 如何以不同方式形成的分组吗?看起来可能,但需要澄清一下。
-
不完全确定您的意思。但想法是,当两个组具有最长的匹配字符串时,它将返回两个匹配组的编号。这有帮助吗?
-
明白!您想创建尽可能多的匹配组吗?在第 4 组中,猫、狗与其他三个组匹配,为什么不能选择其中一个?你想匹配一半以上的动物吗?
-
是的,尽可能多的匹配组,但理想情况下,我希望它们只在缺少一只动物时匹配。 IE。 4 种中有 3 种,或 9 种中有 8 种(我的数据集多达 9 种动物)。
-
你想实际匹配子字符串吗?还是您的用例本质上是关于匹配单词的?
标签: r string matching longest-substring