全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
2476 9
2011-10-05
我的数据是1960-2010美国上市公司的月资料,有20000多家公司的月股票价格,请问怎么把少于30个观察值(包括missing value)的公司都删掉。多谢各位牛人了
二维码

扫码加我 拉你入群

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

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

全部回复
2011-10-5 12:55:37
这个可以使用egen命令+group()选项给每家上市公司产生一个新的连续编号变量,如group变量(如第一家上市公司group赋值1,第二家赋值2,如此等等)。然后再用forvaule循环语句进行删选
二维码

扫码加我 拉你入群

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

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

2011-10-5 12:56:17
删选条件如下:将每家上市公司的group变量进行求和,然后除以30,如果所得的结果大于等于group本生,则符合大于等于30个观察值的要求,则保留,其他则删除。
二维码

扫码加我 拉你入群

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

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

2011-10-5 12:57:10
以上操作应该可以达到楼主的要求。
二维码

扫码加我 拉你入群

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

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

2011-10-10 19:43:08
麻烦哪位高人看一下我的命令,我是要删除观察值小于36个的公司,我按照2楼朋友的建议写的程序,不知道为什么按我的程序算出来只删除了第一家公司(19个观察值)和第二家公司的前36个观察值,我数据一共有28213家公司。急求,跪谢各位高人了

我的程序
xtset ID date
egen id=group(ID)
forvalues i=1/28213 {
   quietly sum(id) if id==`i'
   drop if sum(id)/id<=36 & id==`i'
}
二维码

扫码加我 拉你入群

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

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

2011-10-10 21:42:18
*-Try this one:

xtset code date
bysort code: gen N = _N
drop if N<=36
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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