【有问必答】如何重新组合数据

2017-04-05 高娜娜 爬虫俱乐部 爬虫俱乐部

在实际操作中,我们常常需要依据研究的需要将原始的数据重新合,stata常用的数据重新组合的命令有xpose(转置)、reshape(转换)、stack(堆砌)、cross(交叉)等。命令很简单,但关键在于灵活应用。

下面以肖教授提出的问题为例,介绍如何用reshape命令灵活的重新组合数据。

肖教授的原始数据结构是这样的:数据主要包括三部分内容,permno是独特的公司代码(类似于中国的股票代码);vc1-vc3是该公司上市前投资于该公司的风投列表;car1-car3是不同时间窗口内的累积收益率。如下图所示。

现在想研究每个风投在不同时间窗口内的累积收益率,也就是想把数据变成如下这种格式:

在达到最终目的之前,我们先将问题简化,假如数据只包括permno和vc1-vc3(如下图所示)

把它重新组合成这样的格式(如下图)

小编相信绝大部分读者都会做,只需要用reshape long vc,i(permno) j(n)命令就可以了。

那么,想把car1-car3和vc以及permno一一对应起来,应该怎么做呢?其实做法很简单,命令还是reshape long vc,i(permno) j(n)

这是因为,在长数据和宽数据的转换中,对于没有转换的变量,会按照原本的数据对应关系一一列出来。以肖教授的数据为例,在原始的excel文件中,permno(13407)的car1是-0.1989424,那么,在只对vc转换而未对car转换的情况下,所有permno(13407)所对应的car1都是-0.1989424,如下图所示。

这样,我们就基本达到目的了,剩下的就是做一些细微的调整。

由于permno(13407)的风投有3个(vc1-vc3),permno(14499)的风投只有2个(vc1-vc2),所以在reshape后会有一段vc是空的,此时只需要用drop 命令将这部分删掉就可以。

完整的代码是这样的:

import excel Stata_Question.xlsx, firstrow clear

reshape long vc ,i(permno) j(n)

drop if vc == ""

order vc n permno

要达到这样的效果,可以使用不同的方法,比如可以使用循环语句,但用reshape会更简洁一些。



以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~

                        文字编辑:高娜娜

技术总编:刘贝贝



往期推文推荐:

1.中国高校财经、管理与综合类期刊灌水排行榜

2.关于RTF你不知道的命令

3.关于RTF你不知道的命令之番外篇

4.免费事件研究,一片片从邮局寄来

5.免费的股价同步性,一片片从邮局寄来

6.Stata叫你回家听音乐了!

7.一言不合就用stata写邮件(Outlook/Foxmail)

8.听说你想知道怎么用stata画地图?

9.I have a Stata, I have a python

10.I have a Stata, I have a Python之二——pdf转word




关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

欢迎关注爬虫俱乐部

微信扫一扫
关注该公众号