sungmoo 发表于 2010-8-25 15:02 
voodoo 发表于 2010-8-25 11:23
为B库的基金全称找到相应的基金代码
*设B库中所有基金都能在A库中找到对应的简称,且A库中各简称均有相应代码。
use B,clear
g g=1
ren fndnmefull fndnme
append using A
sort fndnme g
replace fndcd=fndcd[_n-1] if indexnot(fndnme[_n-1],fndnme)==0
keep if g==1
drop g
*所给的B库中有些基金在A库中找不到对应的简称。
indexnot()真是妙极!——我就因为没有意识到这个函数的存在竟然自己编了个循环实现大致相应的功能,可谓笨极!
还有几点小问题:
①replace fndcd=fndcd[_n-1] if indexnot(fndnme[_n-1],fndnme)==0起作用严格依赖于append+sort后的排序,要求A库简称fndnme恰好排在B库fndnmefull之前,这就使得“宝盈泛沿海区域增长股票证券投资基金”由于简称中被删除了“区域”两字,排序在全称之后,最终无法匹配。能否实现对A库全库搜索匹配呢?
②还有剩下剩下81个没有匹配的基金中,有些也是有规律,如32家封闭式基金(比如全称“泰和证券投资基金”,其简称就是“基金泰和”),其它如“交银施罗德……”、“摩根士丹利华鑫……”等,这又该如何逐一系统实现?