新足迹

 找回密码
 注册

精华好帖回顾

· 在澳洲第一次买新车 (2008-4-2) villa · 再说说小生意的生意贷款 (2011-2-26) yuxuanlin
· 澳洲买房之经验略谈。-(冷饭) (2005-1-19) melbren · 安装双摄像头的行车记录仪, 前后摄像, 同时解决了大suv倒车盲区问题。 (2013-7-14) shangpin
Advertisement
Advertisement
查看: 1865|回复: 22

请教excel / access 高手 分分感谢 [复制链接]

发表于 2013-3-26 17:08 |显示全部楼层
此文章由 玎珰 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 玎珰 所有!转贴必须注明作者、出处和本声明,并保持内容完整
本帖最后由 玎珰 于 2013-3-26 17:10 编辑

本人是菜鸟 可能叙述不清  向各位高手请教  

问题是关于match 2个数据库

数据库1: 有2 个variables: employer name, employer locaiton   (access 格式)

数据库2: 有3个variables: employer name, employer locaiton and employer ID (excel 格式)

现在想根据employer name, employer locaiton这两个variable是match 2个数据库

但是  数据库1 和数据库2 的同一employer name 可能不是完全表述的一致, e.g. 1个表达为 sydney network ltd 另一个可能是 network ltd (但都是同一家公司), 或者地址的  一个拼为street 有suburb  一个是st 没有suburb

这种情况下 应该怎么match
谢谢回复
Advertisement
Advertisement

退役斑竹

发表于 2013-3-26 17:16 |显示全部楼层
此文章由 大饼 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 大饼 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这数据库谁设计的?
真滥啊

发表于 2013-3-26 17:20 |显示全部楼层
此文章由 玎珰 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 玎珰 所有!转贴必须注明作者、出处和本声明,并保持内容完整
大饼 发表于 2013-3-26 17:16
这数据库谁设计的?
真滥啊


政府机关的数据 我也觉得烂呀

评分

参与人数 1积分 +4 收起 理由
icec + 4 你太有才了

查看全部评分

特殊贡献奖章

发表于 2013-3-26 17:21 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这没什么好办法,只能模糊match
网上有算法可以给两个字符串区别度打分,你自己定一个值,超过这个值就算不同的employer
如果要excel/access解决那估计不容易

评分

参与人数 1积分 +2 收起 理由
玎珰 + 2 谢谢 算法是用什么技术算呀

查看全部评分

发表于 2013-3-26 17:23 |显示全部楼层
此文章由 Janet 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Janet 所有!转贴必须注明作者、出处和本声明,并保持内容完整
只有找出一定的规律,然后Match; 剩下的手工了。 数据库设计真滥。

我处理过类似的地址情况,例如Roma Street 和Roma ST, 把所有的都转成缩写形式, 然后Match;

评分

参与人数 1积分 +2 收起 理由
玎珰 + 2 感谢分享

查看全部评分

特殊贡献奖章

发表于 2013-3-26 17:29 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我们公司是用的自己写的crm也有很多重复的organisation用不同的名字

这个代码是我现在用来查duplicated数据的,语法是coldfusion不过跟很多语言差不多。返回的值就是s和t的差别
  1. function levDistance(s,t) {
  2.     var d = ArrayNew(2);
  3.     var i = 1;
  4.     var j = 1;
  5.     var s_i = "A";
  6.     var t_j = "A";
  7.     var cost = 0;
  8.    
  9.     var n = len(s)+1;
  10.     var m = len(t)+1;
  11.    
  12.     d[n][m]=0;
  13.    
  14.     if (n is 1) {
  15.         return m;
  16.     }
  17.    
  18.     if (m is 1) {
  19.         return n;
  20.     }
  21.    
  22.      for (i = 1; i lte n; i=i+1) {
  23.       d[i][1] = i-1;
  24.     }

  25.     for (j = 1; j lte m; j=j+1) {
  26.       d[1][j] = j-1;
  27.     }
  28.    
  29.     for (i = 2; i lte n; i=i+1) {
  30.       s_i = Mid(s,i-1,1);

  31.       for (j = 2; j lte m; j=j+1) {
  32.           t_j = Mid(t,j-1,1);

  33.         if (s_i is t_j) {
  34.           cost = 0;
  35.         }
  36.         else {
  37.           cost = 1;
  38.         }
  39.         d[i][j] = min(d[i-1][j]+1, d[i][j-1]+1);
  40.         d[i][j] = min(d[i][j], d[i-1][j-1] + cost);
  41.       }
  42.     }
  43.    
  44.     return d[n][m];
  45. }
复制代码

评分

参与人数 2积分 +5 收起 理由
玎珰 + 2
Janet + 3 感谢分享

查看全部评分

Advertisement
Advertisement

发表于 2013-3-26 17:32 |显示全部楼层
此文章由 wil 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 wil 所有!转贴必须注明作者、出处和本声明,并保持内容完整
http://en.wikipedia.org/wiki/Cosine_similarity

但要先对所有数据进行处理后(如楼上所言)再进行match,可以自行定义阀值,大于某一数值表示匹配,小于某一数值表示不匹配,介于两阀值之间的为不确定,需要人工识别

评分

参与人数 2积分 +6 收起 理由
大饼 + 4 你太有才了
玎珰 + 2 感谢分享

查看全部评分

回忆是红色的天空

特殊贡献奖章

发表于 2013-3-26 17:35 |显示全部楼层
此文章由 kr2000 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 kr2000 所有!转贴必须注明作者、出处和本声明,并保持内容完整

评分

参与人数 1积分 +2 收起 理由
玎珰 + 2 我很赞同

查看全部评分

发表于 2013-3-26 17:37 |显示全部楼层
此文章由 玎珰 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 玎珰 所有!转贴必须注明作者、出处和本声明,并保持内容完整
kr2000 发表于 2013-3-26 17:35
我的算法是这个http://en.wikipedia.org/wiki/Levenshtein_distance

谢谢回复
非常给力

发表于 2013-3-26 17:38 |显示全部楼层
此文章由 玎珰 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 玎珰 所有!转贴必须注明作者、出处和本声明,并保持内容完整
wil 发表于 2013-3-26 17:32
http://en.wikipedia.org/wiki/Cosine_similarity

但要先对所有数据进行处理后(如楼上所言)再进行match ...

谢谢回复 非常给力

发表于 2013-3-26 17:40 |显示全部楼层
此文章由 克赛前来拜访 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 克赛前来拜访 所有!转贴必须注明作者、出处和本声明,并保持内容完整
数据先整理,然后再匹配。
比如通过查找替换把所有的"空格[S,s][T,t]空格“替换成”空格Street空格"。
然后通过查找逗号把suburb单独分成一列。

评分

参与人数 1积分 +2 收起 理由
玎珰 + 2 补分谢谢

查看全部评分

Advertisement
Advertisement

发表于 2013-3-26 17:41 |显示全部楼层
此文章由 wil 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 wil 所有!转贴必须注明作者、出处和本声明,并保持内容完整
http://cs.joensuu.fi/~zhao/Link/Similarity_strings.html

Edit_Distance(sydney network ltd,network ltd)=61.11%
The total escaped time is: 0 (ms).

Cosin_Similarity(sydney network ltd,network ltd)=81.65%
The total escaped time is: 1 (ms).

评分

参与人数 1积分 +3 收起 理由
玎珰 + 3 补分谢谢

查看全部评分

回忆是红色的天空

发表于 2013-3-26 17:47 |显示全部楼层
此文章由 flyingmel 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 flyingmel 所有!转贴必须注明作者、出处和本声明,并保持内容完整
要分几个步骤来做了
1. 如何展现来自excel和acces的数据,简单的方法就把access的数据导入到excel的一个sheet中
2. 编程来match所有的记录。你可以在excel里面用VB写Macro或者在外面用任何一种别的语言读取这个包含了两组数据的excel。无论用那种方法,你必须要通过几个不同的类别来做match
    1)完全match的,这个简单,只要做字符串的比较就可以了
    2)有相似度的,比如你提到的那几个例子,如果可以提取出pattern,比如street=st,NSW=New South Wales,<location>+employer name=<nil>+employer name,等等,就可以把这些逻辑写到程序里,对于street和st这样的比较,可以定义到外面一个对照表里而不是写在code里
    3)其他的一些能想到的规则,比如忽略大小写,忽略标点符号等等,如果你对数据很熟悉,这些是可以列举出来的
3. 通过程序的自动比较,你不可能100%匹配所有的记录,你应该把剩下的没有通过匹配的记录单独生成一个sheet,左右排好以便手工对比。

另外有个不需要变成的编程的办法是,
你把两组数据排好序,比如按employer name排好了,导出成CSV文件,把excel的employer ID用文本编辑(比如UltraEdit)的column功能去掉,然后用compare工具(比如UltraEdit Compare)进行比较,这样可以手工匹配大部分的记录

评分

参与人数 1积分 +3 收起 理由
玎珰 + 3 补分谢谢

查看全部评分

发表于 2013-3-26 17:47 |显示全部楼层
此文章由 玎珰 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 玎珰 所有!转贴必须注明作者、出处和本声明,并保持内容完整
wil 发表于 2013-3-26 17:41
http://cs.joensuu.fi/~zhao/Link/Similarity_strings.html

Edit_Distance(sydney network ltd,network lt ...

谢谢大侠 明天补分!!!!

发表于 2013-3-26 17:49 |显示全部楼层
此文章由 玎珰 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 玎珰 所有!转贴必须注明作者、出处和本声明,并保持内容完整
flyingmel 发表于 2013-3-26 17:47
要分几个步骤来做了
1. 如何展现来自excel和acces的数据,简单的方法就把access的数据导入到excel的一个she ...

谢谢大侠 明天补分

发表于 2013-3-26 19:44 |显示全部楼层
此文章由 dtmr17 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dtmr17 所有!转贴必须注明作者、出处和本声明,并保持内容完整
Export the relevant info out to excel, try to de-duplicate them, only the unique info will left, give it some manual treatment, you can then create a mapping table in access.

评分

参与人数 1积分 +2 收起 理由
玎珰 + 2 补分谢谢

查看全部评分

Advertisement
Advertisement

发表于 2013-3-26 21:42 |显示全部楼层
此文章由 alphaseeking 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 alphaseeking 所有!转贴必须注明作者、出处和本声明,并保持内容完整
学习一下

发表于 2013-3-27 01:33 |显示全部楼层
此文章由 easter 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 easter 所有!转贴必须注明作者、出处和本声明,并保持内容完整
我看很多网站的地址是从库里选的,自己不能随便输入。这个库是收费的,还是有什么地方可以免费提供呀?

发表于 2013-3-27 06:39 |显示全部楼层
此文章由 dtmr17 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 dtmr17 所有!转贴必须注明作者、出处和本声明,并保持内容完整
这库在abs的网站上可以下载,好像au post的网站上也有。

发表于 2013-3-31 16:52 |显示全部楼层
此文章由 玎珰 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 玎珰 所有!转贴必须注明作者、出处和本声明,并保持内容完整
easter 发表于 2013-3-27 01:33
我看很多网站的地址是从库里选的,自己不能随便输入。这个库是收费的,还是有什么地方可以免费提供呀? ...

我的数据库是公司的  不确定哪里有免费的

发表于 2013-4-2 17:16 |显示全部楼层
此文章由 鱼羊鲜 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 鱼羊鲜 所有!转贴必须注明作者、出处和本声明,并保持内容完整
用地址去google maps取经纬度,经纬度一样的就判定为一样
准确度有待观察
Advertisement
Advertisement

发表于 2013-4-5 23:21 |显示全部楼层
此文章由 Giftcard 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 Giftcard 所有!转贴必须注明作者、出处和本声明,并保持内容完整
都是大师。。。

发表于 2013-4-18 01:35 |显示全部楼层
此文章由 phome 原创或转贴,不代表本站立场和观点,版权归 oursteps.com.au 和作者 phome 所有!转贴必须注明作者、出处和本声明,并保持内容完整
基本方法还是整理-匹配。
也可先匹配,看有多少没配上,少的话手动,多了看有没有规律,如实在又多又没规律,用楼上各位的匹配算法

发表回复

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

本版积分规则

Advertisement
Advertisement
返回顶部