[已解决] 两列根据相同字符占比,按照相似度模糊匹配的问题

  [复制链接]
查看119601 | 回复124 | 2021-2-18 22:14:09 | 显示全部楼层 |阅读模式
两列根据相同字符占比,按照相似度模糊匹配,按照最相似的为同一行。
Power Query如何做查询?


11023111747331.rar (48.1 KB, 下载次数: 0)
回复

使用道具 举报

shiming | 2021-2-18 22:20:09 | 显示全部楼层
比较sheet1、sheet2的J列
回复

使用道具 举报

原始宝宝 | 2021-2-18 22:26:10 | 显示全部楼层
总体来说,用Power Query实现并不难,但对于大多数情况下,用相同字数的多少来匹配的效果并不是很好,但你这个也许可以试试,可以参考我的这篇小文章:
杂乱文本按”相似度“进行匹配
回复

使用道具 举报

ldm1221 | 2021-2-18 22:31:10 | 显示全部楼层
Power Query貌似没成功,请问哪个环节出错了?
11023111747332.rar (59.75 KB, 下载次数: 0)
回复

使用道具 举报

osp | 2021-2-18 22:35:10 | 显示全部楼层
Power Query貌似没成功,请问哪个环节出错了?


对两表做合并不是添加索引列并用索引列做匹配,而是建一个内容都是“1”(或任何字符)的自定义列做匹配(或参考我另一篇文章:构建两表全部组合的极简方法)。
回复

使用道具 举报

monkeyking | 2021-2-18 22:39:10 | 显示全部楼层
我仔细看了你做的步骤,大概有以下两个方面的问题:
    生成两表全匹配关系用的是索引列,而应该用一个内容全部为一样的列;分组的时候不应聚合所有行(我那个例子里面是用来得到所有组合的相似度,而且两个表的数据只有一列,可以那么做),那样得到的是每个分组(你表一的项目)对应的所有行(表二)以及索引列的所有行,两次展开后数据会进一步重复。而应该通过求和的方式聚合你所要的列以生成分组的代码,然后将代码中的List.Sum(求和)函数改为List.First(取第一行即相似度最高的行)——关于分组依据类似的操作方法,可以先参考我的文章《动态分组合并同类项》,理解了分组的操作原理之后,再来根据实际需要应用。

  我在你做的查询基础上修改了一下,详细请看附件。

11023111747333.rar (62.64 KB, 下载次数: 0)
回复

使用道具 举报

liruotong | 2021-2-18 22:44:11 | 显示全部楼层
List.Count([交叉])/List.Average({List.Count([原名称]),List.Count([对比名称])}),Average匹配最佳。附件打开后第一次刷新报错,但是在查询编辑器中刷新均不报错,隐私设置已检查!不知为何???

11023111747334.rar (22.05 KB, 下载次数: 0)
回复

使用道具 举报

xprimer | 2021-4-24 17:50:43 | 显示全部楼层
我也来支持一下,很喜欢这里老师
回复

使用道具 举报

jylt2004 | 2021-5-5 11:04:59 | 显示全部楼层
加油站加油
回复

使用道具 举报

文文 | 2021-6-12 11:14:32 | 显示全部楼层
顶顶更健康
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则