楼主: vincent829
5486 29

[其他] 怎么标记event month? [推广有奖]

  • 0关注
  • 0粉丝

硕士生

0%

还不是VIP/贵宾

-

威望
0
论坛币
515 个
通用积分
0.1673
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1736 点
帖子
99
精华
0
在线时间
108 小时
注册时间
2005-10-6
最后登录
2013-9-25

楼主
vincent829 发表于 2009-8-8 17:21:12 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我有两个文档,一个是panel data,一个是cross sectional data
sheet 1是cross sectional data,有id和event month两个变量,也就是sample的研究起始时间,sheet 2是panel data,有id, year, month, time和cr(收益率)。
我想做个在sheet 2生成一个时间序列变量,从1开始,1对应的是sheet 1对应event month的后一个月
比如当id=6855时,sheet1中event month 是198106,新生成一个变量在sheet2中,当id=6855, event month=198107是,值为1
先在此谢过
二维码

扫码加我 拉你入群

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

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

关键词:month Event Even mont vent 收益率 cross

回帖推荐

sungmoo 发表于10楼  查看完整内容

或 di %tm monthly("1983-10", "YM")

sungmoo 发表于9楼  查看完整内容

di %tm monthly("1983m10", "YM")

voodoo 发表于7楼  查看完整内容

sungmoo确实“结合你数据的特点”(如你在sheet2中已将早于eventmonth的obs删除了),但这导致其程序不够通用,如不小心可能导致错误结果。比如: use sheet1,clear replace eventmonth = 198110 in 1 //试错 ren eventmonth time append using sheet2 sort id time year recode year (.=9999), g(z) by id time: egen y=max(z) replace z=(y

voodoo 发表于6楼  查看完整内容

你再试试,肯定可行的。 用merge id using sheet1,sheet2将就每一id生成eventmonth变量(来自sheet1),然后用gen deltat = time - eventmonth即可。前提是必须将time和eventmonth转化为Stata认得的%tm格式。

voodoo 发表于3楼  查看完整内容

请参见:http://dss.princeton.edu/usingdata/stata/analysis/eventstudy.html。其中有一段程序能满足你的要求。

sungmoo 发表于2楼  查看完整内容

*结合你数据的特点,你试一下(sheet1与sheet2都在默认目录中) use sheet1,clear ren eventmonth time append using sheet2 sort id time year recode year (.=9999), g(z) by id time: egen y=max(z) replace z=(y

本帖被以下文库推荐

沙发
sungmoo 发表于 2009-8-8 21:43:02
*结合你数据的特点,你试一下(sheet1与sheet2都在默认目录中)
use sheet1,clear
ren eventmonth time
append using sheet2
sort id time year
recode year (.=9999), g(z)
by id time: egen y=max(z)
replace z=(y<9999)
by id: g m=sum(z)
drop y z
keep if year<.

藤椅
voodoo 发表于 2009-8-9 00:26:04
请参见:http://dss.princeton.edu/usingdata/stata/analysis/eventstudy.html。其中有一段程序能满足你的要求。
巫毒上传,必属佳品!
坛友下载,三思后行!

板凳
vincent829 发表于 2009-8-9 10:52:57
2# sungmoo
谢谢,问题能解决了

报纸
vincent829 发表于 2009-8-9 10:55:02
3# voodoo
我看了一下,好像没有发现和我问题一样的程序
还是多谢,你的链接挺实用的

地板
voodoo 发表于 2009-8-9 19:58:51
vincent829 发表于 2009-8-9 10:55
3# voodoo
我看了一下,好像没有发现和我问题一样的程序
还是多谢,你的链接挺实用的
你再试试,肯定可行的。

用merge id using sheet1,sheet2将就每一id生成eventmonth变量(来自sheet1),然后用gen deltat = time - eventmonth即可。前提是必须将time和eventmonth转化为Stata认得的%tm格式。
巫毒上传,必属佳品!
坛友下载,三思后行!

7
voodoo 发表于 2009-8-9 20:18:59
sungmoo 发表于 2009-8-8 21:43
*结合你数据的特点,你试一下(sheet1与sheet2都在默认目录中)
use sheet1,clear
ren eventmonth time
append using sheet2
sort id time year
recode year (.=9999), g(z)
by id time: egen y=max(z)
replace z=(y
sungmoo确实“结合你数据的特点”(如你在sheet2中已将早于eventmonth的obs删除了),但这导致其程序不够通用,如不小心可能导致错误结果。比如:

use sheet1,clear
replace eventmonth = 198110 in 1    //试错
ren eventmonth time
append using sheet2
sort id time year
recode year (.=9999), g(z)
by id time: egen y=max(z)
replace z=(y<9999)
by id: g m=sum(z)
drop y z
keep if year<.

// 此时得到的结果恐怕不是你所想要的!
巫毒上传,必属佳品!
坛友下载,三思后行!

8
rayality 发表于 2009-8-9 23:20:06
将time和eventmonth转化为Stata认得的%tm格式。
请问,
di %tm monthly("198310", "YM")
为什么显示的是缺失值呢?
谢谢!

9
sungmoo 发表于 2009-8-9 23:36:23
rayality 发表于 2009-8-9 23:20 di %tm monthly("198310", "YM")为什么显示的是缺失值呢?
di %tm monthly("1983m10", "YM")

10
sungmoo 发表于 2009-8-9 23:39:57

di %tm monthly("1983-10", "YM")

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

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