楼主: littledan0613
8477 14

[面板数据求助] STATA合并数据库时出现遗漏,请朋友们帮忙看看 [推广有奖]

  • 0关注
  • 0粉丝

小学生

57%

还不是VIP/贵宾

-

威望
0
论坛币
8 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
42 点
帖子
5
精华
0
在线时间
10 小时
注册时间
2015-1-5
最后登录
2015-1-20

楼主
littledan0613 发表于 2015-1-7 18:08:46 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
朋友们大家好,我初学STATA,现遇到一个匪夷所思的问题:
我有一个文件包含了81家公司的ISIN,需要通过这些ISIN找到在第二个文件中关于这81家公司对应的信息。
由于第二个文件中,有的公司同时有好几个ISIN码,并用“,”相隔,因此在用1:m merge ISIN指令时出现(note: variable ISIN was str13, now str264 to accommodate using data's values),并发现有些公司的信息没有match到,不知是不是因为merge指令只match第一个ISIN码。
后来我又尝试把有多个ISIN码的情况split成ISIN1,ISIN2,ISIN3...等,想逐次merge各组ISIN码,希望不要有遗漏。可以我逐次merge时,仍然发现有遗漏现象。比如第一家公司US0352901054,merge 1:m ISIN using C:\Users\Vera\Desktop\thesis\org_splitISINsample(note: variable ISIN was str13, now str264 to accommodate using data's values)
    Result                           # of obs.
    -----------------------------------------
    not matched                        58,526
        from master                        81  (_merge==1)
        from using                     58,445  (_merge==2)
    matched                                 0  (_merge==3)
    -----------------------------------------
说明这家公司找不到对应于第二个文件的ISIN的信息,但我发现明明第二个文件的3824-3835个obs就是这家公司的对应信息。为何会出现这种遗漏现象?如何可以把这81家公司的信息最大化地在第二个文件中合并齐全?请赐教,谢谢大家。
org_splitISINsample.dta (40.14 MB)
二维码

扫码加我 拉你入群

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

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

关键词:Stata 合并数据 tata 数据库 Variable Desktop values 数据库 Users 朋友

沙发
钟咸鱼先生 发表于 2015-1-7 20:34:40
这个问题我也遇到了,同求解答~谢过!

藤椅
littledan0613 发表于 2015-1-7 21:11:50
附上这81家公司的ISIN码,谢谢大家。

板凳
SpencerMeng 在职认证  发表于 2015-1-7 22:51:46
littledan0613 发表于 2015-1-7 21:11
附上这81家公司的ISIN码,谢谢大家。
楼主您好!
我试了下提示是:
(note: variable ISIN was str13, now str264 to accommodate using data's values)
variable ISIN does not uniquely identify observations in org_splitISINsample.dta

楼主上传的数据大,很难一下子掌握数据特征,如果楼主熟悉数据结构,建议用input end写成代码,比如类似一下这个例子:
  1. clear
  2. inp str16 name age
  3. wanglei 12
  4. xiaoming 13
  5. zhanghong 12
  6. lilei 12
  7. zhangxiaojun 14
  8. end
  9. sort name
  10. save case1

  11. clear
  12. inp str16 name age
  13. wanglei 12
  14. xiaoming 13
  15. zhanghuahua 16
  16. zhanghong 12
  17. lilei 12
  18. zhangxiaojun 14
  19. end
  20. sort name
  21. save case2

  22. clear
  23. inp str16 name age
  24. wanglei 12
  25. xiaoming 13
  26. zhanghuahua 16
  27. huanglei 13
  28. zhanghong 12
  29. lilei 12
  30. zhangxiaojun 14
  31. end
  32. sort name
  33. save case3

  34. merge name using case1 case2
复制代码

报纸
SpencerMeng 在职认证  发表于 2015-1-7 22:53:06
再提醒下,楼主上传的是stata13的数据,建议低版本使用者先ssc install use13,调取数据时改用use13 路径,就行了。

地板
littledan0613 发表于 2015-1-8 00:19:45
版主你好,非常感谢你的回复。
我刚刚又试了一下,结果如下:
当运用. merge 1:1 ISIN using C:\Users\Vera\Desktop\thesis\org_splitISINsample_new时会出现:
(note: variable ISIN was str13, now str264 to accommodate using data's values)
variable ISIN does not uniquely identify observations in the using data
r(459);


但运用. merge 1:m ISIN using C:\Users\Vera\Desktop\thesis\org_splitISINsample_new
(note: variable ISIN was str13, now str264 to accommodate using data's values)时,结果是下表,
    Result                           # of obs.
    -----------------------------------------
    not matched                        58,526
        from master                        81  (_merge==1)
        from using                     58,445  (_merge==2)

    matched                                 0  (_merge==3)
    -----------------------------------------
并没有出现“(note: variable ISIN was str13, now str264 to accommodate using data's values)
variable ISIN does not uniquely identify observations in the using data”的提示。

可能我之前发帖没有叙述清楚,所以我又把两个文件简化了一下,分别是cfirm_81.dta(new)和org_splitISINsample(new).
cfirm_81(new).dta是81家公司的ISIN码(每个ISIN码对应唯一一家公司), org_splitISINsample(new).dta是多家公司对应的ISIN码(但此文件中有的公司可能对应1个以上的ISIN码)和各公司不同年份对应的变量BI。因为这两个文件唯一共同的变量只有ISIN码用来确定到底是哪家公司,所以我想通过第一个文件中81家公司的ISIN码去寻找在org_splitISINsample(new).dta中这81家公司不同年份的BI值。
因此我选择1:m merge的指令,但发现没有一家公司match。( matched  0)
但我发现这结果与事实是不符合的。比如cfirm_81(new).dta中的第一家公司是US0352901054,实际上在org_splitISINsample(new).dta中第3824-3835个observation就是这家公司US0352901054不同年份的BI值,理论上应该是能match的,不知为何都遗漏了。
朋友们能帮我看一看这个问题吗?到底是哪里出错了?
请大家不吝赐教,万分感激。

org_splitISINsample_new.dta

22.41 MB

cfirm_81_new.dta

1.76 KB

7
littledan0613 发表于 2015-1-8 00:29:49
SpencerMeng 发表于 2015-1-7 22:51
楼主您好!
我试了下提示是:
(note: variable ISIN was str13, now str264 to accommodate using data ...
很感谢版主提供的例子,但此代码应该比较适用于case较少的情况吧?实际上我所要处理的case不止81家(有几千家),如果写成这个input end代码,可能sort name那里要替换几千个名字了。但还是真的非常感谢你提供的思路,学习了:)

8
SpencerMeng 在职认证  发表于 2015-1-8 08:35:04 来自手机
littledan0613 发表于 2015-1-8 00:29
很感谢版主提供的例子,但此代码应该比较适用于case较少的情况吧?实际上我所要处理的case不止81家(有几 ...
不是。我的意思是您抓住数据结构特点,列举几个有代表性的观测值就行。我的意思并不是让您把所有数据input ,那就和上传dta无异了。

9
littledan0613 发表于 2015-1-8 12:37:02
SpencerMeng 发表于 2015-1-8 08:35
不是。我的意思是您抓住数据结构特点,列举几个有代表性的观测值就行。我的意思并不是让您把虽有数据inpu ...
噢噢好的,我再研究研究,谢谢版主~~~

10
520wujing 发表于 2021-9-17 22:24:34
想问下楼主怎么解决么?我的问题比较简单,就是有一份县级数据,然后一份省市县数据,想要将省市数据追加到县级数据当中,也是出现跟您一样的问题。 图片1.png 图片2.png 图片3.png

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2025-12-5 15:59