楼主: Edgar_liu
29896 9

[数据管理求助] 关于数据合并求助,急! [推广有奖]

  • 0关注
  • 0粉丝

高中生

75%

还不是VIP/贵宾

-

威望
0
论坛币
364 个
通用积分
0.0281
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
203 点
帖子
6
精华
0
在线时间
54 小时
注册时间
2010-9-3
最后登录
2015-2-13

楼主
Edgar_liu 发表于 2014-7-22 23:59:41 |AI写论文
30论坛币
麻烦问一下大家,我有如下两个datasets

dataset 1 (master)

  year     cusip              varlist
1998    009847X2
1998     1234567
1998    0345c657
1999    009847X2
1999   1234567
1999    65789V4
...........

dataset2 (using)
  year     cusip          beta
1998   009847X2    0.5
1998   9989X34      1.2
1999   009847X2    1.3
.........


现在需要把两个datasets合并,1是master 2是using,我尝试了以下两种方法。


1.     merge 1:1 cusip year using.....
结果显示的是:variable cusip does not uniquely identify observations in the master data

2.    merge m:m cusip year using....
虽然可以合并,但是结果不对 显示如下: matched是0
Result                           # of obs.
    -----------------------------------------
    not matched                        76,869
        from master                    30,603  (_merge==1)
        from using                     46,266  (_merge==2)

    matched                                 0  (_merge==3)
    -----------------------------------------


我自己猜想的原因是:因为我merge的key variable: cusip是strl的,不是数值型的, help merge的文件中有这么一句话:Key variables cannot be strLs.  

这种问题请问该如何解决?可以把cusip更改成数值格式嘛?如果可以改如何改?因为有的公司的cusip里面是含有字母的。或者有没有其他的merge方法可以解决我的问题?麻烦大家帮帮忙哦,谢谢啦!



最佳答案

xingxf 查看完整内容

首先纠正你一个问题,"Key variables cannot be strLs" 这里的strLs是指长字符,长字符的概念是Stata 13里才出现的,你的cusip只是一般string,不是长字符,merge用一般string匹配没有问题。 其次,如果你认真读了help文档的话,有这么一句话"Use of merge m:m is not encouraged."应该说,merge m:m应该尽量避免,如果真有这种需求,最好通过joinby实现。 你做1:1匹配的时候,"variable cusip does not uniquely identify obs ...
关键词:数据合并 observations observation Variables Variable identify master

沙发
xingxf 发表于 2014-7-22 23:59:42
首先纠正你一个问题,"Key variables cannot be strLs" 这里的strLs是指长字符,长字符的概念是Stata 13里才出现的,你的cusip只是一般string,不是长字符,merge用一般string匹配没有问题。
其次,如果你认真读了help文档的话,有这么一句话"Use of merge m:m is not encouraged."应该说,merge m:m应该尽量避免,如果真有这种需求,最好通过joinby实现。
你做1:1匹配的时候,"variable cusip does not uniquely identify observations in the master data"说明你master的数据对于cusip year组合有重复值。另外,不知道你using数据有没有重复值,你自己要再确认一下。你可以用duplicates命令处理重复值的问题。
你需要明白你的重复值是如何产生的,是需要保存的,还是需要删除的,这个决定了你要用merge还是joinby。
另外,你查一下你的cusip,cusip在许多数据库是6位的代码,在有的数据库是8位代码,8位cusip的前6位和6位cusip是一致的。你显示的cusip有7位有8位,这里肯定有问题。

藤椅
tangaibing 发表于 2014-7-23 00:09:28
路过看看,没有找找

板凳
Edgar_liu 发表于 2014-7-23 05:31:30
xingxf 发表于 2014-7-23 05:00
首先纠正你一个问题,"Key variables cannot be strLs" 这里的strLs是指长字符,长字符的概念是Stata 13里才 ...
谢谢你的回答哦。
master和using我都检查过了没有重复。例子中的cusip是我随便写的,但是这点提醒了我,我去看了下我的cusip 我的dataset1的数据是从WRDS compustat里面导出来的 cusip大多是九位的,也有一些是8位的。我帮dataset1的数据处理好后复制了cusip去WRDS CRSP输出相应的stock的信息保存在dataset2,但是我现在检查了dataset2的cusip全是8位的。好奇怪的现象啊。如果dataset1的cusip是错的话也不可能从CRSP中找到相应的信息呀。样本在3万多数据左右,dataset1和2大概差了1000多个没有找到。您知道我是哪里出错了吗?谢谢啦

报纸
Edgar_liu 发表于 2014-7-23 06:34:02
xingxf 发表于 2014-7-23 05:00
首先纠正你一个问题,"Key variables cannot be strLs" 这里的strLs是指长字符,长字符的概念是Stata 13里才 ...
发现问题啦 原来要把compustat和CRSP的data进行merge需要在SAS里进行,略复杂,不能简单的在stata里用merge命里,因为两个数据库的cusip位数不同。

地板
xingxf 发表于 2014-7-23 07:39:06
Edgar_liu 发表于 2014-7-23 06:34
发现问题啦 原来要把compustat和CRSP的data进行merge需要在SAS里进行,略复杂,不能简单的在stata里用mer ...
对于Compustat和CRSP的整合来说,SAS里能做的,Stata里也一样能做。Compustat里的cusip是9位的,前6位和你的cusip前6位是一致的。你在WRDS里,CRSP下面可以找到CRSP Tools - Translate to PERMCO/PERMNO,可以下载不同数据库系统间的代码对应关系。对于CUSIP,PERMNO,GVKEY之间的转换,你可以参考下面的链接,当然,你仔细阅读WRDS的帮助文档也可以找到答案。
http://bizlib247.wordpress.com/2 ... cusip-permno-gvkey/
已有 3 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
01zhouxuemei + 2 + 1 + 1 + 1 精彩帖子
sucheng199099 + 3 + 3 精彩帖子
凡尘梦1990 + 2 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 4  学术水平 + 5  热心指数 + 5  信用等级 + 2   查看全部评分

7
Edgar_liu 发表于 2014-7-23 17:43:43
xingxf 发表于 2014-7-23 07:39
对于Compustat和CRSP的整合来说,SAS里能做的,Stata里也一样能做。Compustat里的cusip是9位的,前6位和你 ...
谢谢啦!问题已经解决了,通过CRSP数据的PERMNO去CRSP/Compustat Merged找到LPERMNO和gvkey,然后和原来的compustat的数据merge就可以了。
再次感谢您的热心指点!

8
Yes._滕飞 发表于 2017-5-11 10:15:46
mark mark  xiexie

9
01zhouxuemei 学生认证  发表于 2017-11-9 22:39:02
Edgar_liu 发表于 2014-7-23 17:43
谢谢啦!问题已经解决了,通过CRSP数据的PERMNO去CRSP/Compustat Merged找到LPERMNO和gvkey,然后和原来的 ...
楼主,能不能讲详细一点呢?我还是没有明白。怎么用CRSP数据的PERMNO去CRSP/Compustat Merged找到LPERMNO和gvkey?CRSP/Compustat Merged里只有几个关于SAS的链接,相关命令?怎么找你说的LPERMNO和gvkey?请求解答。无比感激。楼主最后使用stata做的吗?

10
01zhouxuemei 学生认证  发表于 2017-11-10 10:32:53
xingxf 发表于 2014-7-23 07:39
对于Compustat和CRSP的整合来说,SAS里能做的,Stata里也一样能做。Compustat里的cusip是9位的,前6位和你 ...
楼主,拜托回帖呀

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

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