全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
1330 6
2017-02-15
请问我有二笔资料,母文件和子档。我想以子文件为索引,在母文件中找寻sale成绩与最近的对手,

最接近的对手定义= min abs(psale-ssale)但不能为本身。

之前在sas做是用sql的left join加where去做,但stata好像沒有完整的sql。

感觉好像要在子档写loop,以子档的条件下,找寻销售额差异最小,并返回

对应的公司…

感谢大家。

数据链路:http://pan.baidu.com/s/1nuAJyad


资料:
母檔=
com     year    group   psale
apple   1998    1       8
lg      1998    1       42
acer    1998    1       9
asus    1998    1       25
hp      1998    1       57
samsung 1998    1       13
htc     1998    1       94
ms      1998    1       2
lemax   1998    2       20
.
.

子檔=
com     year    group   ssale   closeone
lg      1998    1       42      hp
samsung 1998    1       13
vivo    1998    2       37
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-2-16 08:12:02
你给的资讯似乎还不够完整!
  • 除了 1998 年外,还有其它年吗?若有的话,竞争对手应该还是同一年去寻找的吧?
  • 子母档不是同一个档吧(有何关系?子档是母档的部分集合吗?)?其中,为何 lg and samsung 的 psale 与 ssale 都一样?
  • 就母档你所给资料(9家)与子档(3 家)请完成 closeone 之你想之结果(才能确定你的目的)!
  • 如若我可以直接单就针对母档求出每一公司之 closeone,是不是就可以回答你的问题?(若是的话,写程序会较方便)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-2-16 15:35:11
1=竞争对手应该在同年同群组里找(其中群组已事先依其它财务指标分类)
2=子文件是母文件部分集合。
3=是的,这只是个模拟档案,实际上母档是几十万笔,子档是一万多笔。
4=是的,若能在母檔中就每家公司[同群及同年条件下]找到与他sale最相近者也是答案。

SAS sql的程序大概是:
create table new as select*,  abs(子.sale-母.sale) as matchsale
from 子lef join 母
on 子.date=母.date  and 子.group=母.group and abs(子.sale-母.sale)^=0
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-2-16 16:52:44
stataxp 发表于 2017-2-16 15:35
1=竞争对手应该在同年同群组里找(其中群组已事先依其它财务指标分类)
2=子文件是母文件部分集合。
3=是的 ...
1. 请点回复我才能接获通知!2. 同一群也请告知(什么变量,例如产业),最好举个例子,才能一鼓作气回答(这涉及到 coding)。3. 我心目中有初步想法与作法,但可能将其 post 到美国 Stata 论坛去寻求更好之答案!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-2-16 18:15:11
黃河泉 发表于 2017-2-16 16:52
1. 请点回复我才能接获通知!2. 同一群也请告知(什么变量,例如产业),最好举个例子,才能一鼓作气回答 ...
變數有TIME(時間),股價淨值比, 公司代碼 組別(依市值區分)。資料大約像這樣:對每一筆資料中的公司代碼,依其組別及時間的條件下,找尋股價淨值比最相近的公司代碼,但不能為本身。

時間             公司代碼        組別        股價淨值比        最近的對手
1988m1        tw1701        1        2.45                 tw1410
1988m1        tw1213        1        1.98                  tw1701
1988m1        tw1707        1        2.67       
1988m1        tw2702        1        9.45       
1988m1        tw9902        1        4.16       
1988m1        tw1410        1        2.57       
1988m2        tw2601        3        27.44       
1988m2        tw2505        3        9.49       
1988m2        tw1413        3        1.46       
1988m2        tw2901        3        3.74       
1988m2        tw1417        4        1.87       
1988m2        tw1506        4        3.24       
1988m2        tw1215        4        3.58       
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-2-17 17:24:01
stataxp 发表于 2017-2-16 18:15
變數有TIME(時間),股價淨值比, 公司代碼 組別(依市值區分)。資料大約像這樣:對每一筆資料中的公司代碼, ...
謝謝黃老師,我後來東想西問,找到一些提示便解決了。
大概的方法就是在母檔裡排序[bysort group time (sale)],依上下位相減。若下位大,則取公司代碼的上一位,若上位大,則取公司代碼的下一位。用cond指令分配,不用loop很快就解決了。感謝。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群