首页 文章

根据stata中的2个其他变量为变量分配排名

提问于
浏览
0

我有一些纵向数据,其中包含一些变量: firm idevent dateabnormal return ,其中 event date 是每家公司的收购公告日期,而 abnormal return 是每家公司在5天(-2,2)的窗口内的事件公告回报 . 在这里,每个样本公司在预定义的时间段内进行多次收购 .

例如,我有200家公司,每家公司在1999 - 2011年期间都有多次异常的回报观察 . 因此,在此期间,每家公司至少有2次此类观察,计算超过2个此类事件日期 .

我需要为每个公司的异常收益分配一个等级,以便按照事件发生日期的顺序对后续交易(在公司首次收购之后)进行排名 . 因此,我想创建一个新的 rank 变量,并将其用于进一步分析企业在第一个变量之后的每个后续异常收益的增加/减少 .

请建议我如何在Stata中执行此操作或使用哪些代码?我尝试过:

bysort firm_id event_date: egen rank = rank(abnormal_return),

但我没有得到我想要的东西 .

注: - a)在我的样本中,很少有公司在同一个事件日期执行超过1笔交易(比方说2),因此这两笔交易的异常收益完全相同; b)异常收益是正面或负面的,在6/7的十进制位置,例如负异常回报看起来像,-0.0365089;积极的,0.0416888 .

对不起,我已经在statalist中发布了这个查询,我应该在帖子中提到过,但不知怎的匆忙得到反馈,我错过了 - 真诚的道歉 .

(更新)我终于设法分享了我的dta快照的Dropbox链接 . 文件 .

https://www.dropbox.com/s/w501upimdgwvzyz/Rank.dta?dl=0

我现在的查询(尚未在statalist上回答,我正在尝试根据此进行分析,因此在此处重新发布):

如果我正在看一个3年的窗口,即我需要重新排列异常收益,因为后续交易是在第一笔交易后的3年内进行的 . 例如,我的dta中的公司 . id = 13的文件在2000年,2001年,2005年和2006年分别有4笔交易 . 第一笔交易是在2000年 . 2005年第三次收购,距离2000年的重点交易超过3年,因此不应计入或排名2000年的第一笔交易,而是2005年将是这家公司新的第一笔交易为期3年 . 所以,在这种情况下,我必须按照firm_id排名交易,13为0(2000),1(2001); 0(2005),1(2006) .

有人可以帮忙重新编码吗?

1 回答

  • 1

    在评论中你注意到你想要的是由

    sort firm_id event_date 
    by firm_id : gen rank = _n 
    bysort firm_id event_date : replace rank = rank[1]
    

    这可以浓缩为

    bysort firm_id (event_date): gen rank = _n 
    by firm_id event_date: replace rank = rank[1]
    

相关问题