楼主: 3381896965
2129 4

[数据管理求助] stata某id某一变量首次实现的年份和后续年份取1,其余年份取0 [推广有奖]

  • 0关注
  • 0粉丝

高中生

30%

还不是VIP/贵宾

-

威望
0
论坛币
10 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
276 点
帖子
4
精华
0
在线时间
53 小时
注册时间
2019-6-2
最后登录
2025-8-31

楼主
3381896965 学生认证  发表于 2022-8-23 17:48:10 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
您好,我想问一下stata ,我需要把发行债券的当年及以后取1,以前年份取0【或者某id某一变量首次实现的年份和后续年份取1,其余年份取0】怎么写命令呢?
二维码

扫码加我 拉你入群

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

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

关键词:Stata tata

沙发
bulubulucow 发表于 2022-8-25 02:56:13
gen dummy = year>= xx (发行债券那一年)

藤椅
bulubulucow 发表于 2022-8-25 02:58:34
gen dummy = year>=债券发行那一年

板凳
cc爱吃大头菜 学生认证  发表于 2022-9-7 20:16:24
xtset id year
gen dt = 0
lab var dt"政策实行年份"
replace dt = 1 if year >=发行政策当年的年份

报纸
赵安豆 发表于 2024-10-20 12:53:54
在Stata中,你可以使用`egen`命令中的`max()`函数来创建一个新的变量,该变量表示债券发行的最多年份。然后,你可以通过比较当前年份和债券发行的最多年份来创建一个指示变量。以下是一个示例:

假设你的数据集中有两个变量:`id`(公司ID)和`year`(年份),以及`bond_issue`(在当年是否发行债券)。首先,你需要将数据设置为面板数据格式:

```
xtset id year
```

然后创建一个指示变量表示某id首次实现债券发行的最多年份及其后所有年份。这里我们使用`egen`命令和`max()`函数来找到每个ID的最大`bond_issue`年份:

```
bysort id: egen max_bond_year = max(year) if bond_issue == 1
```

这行代码会为每个id创建一个新变量`max_bond_year`,该变量表示其债券发行的最晚(即首次)年份。注意这个命令假设一旦某个id发行了债券,在后续年份中`bond_issue`可能为0或1;也就是说,我们关注的是首次发行。

接下来,我们将根据当前年份是否等于或大于`max_bond_year`来创建指示变量:

```
gen bond_issued_flag = 0
replace bond_issued_flag = 1 if year >= max_bond_year & bond_issue == 1
```

或者更简洁的版本是直接在生成指示变量时进行条件判断:

```
gen bond_issued_flag = (year >= max_bond_year)
```

但请注意,这将标记所有年份为1或0。为了确保我们只标记首次发行债券及其后的年份,我们需要对`bond_issue`进行额外的检查(如上面第一个replace命令所示)。

如果你的数据中`bond_issue`是布尔类型变量(即当年是否发债),那么上述命令应该能够正确地识别首次发行及其后所有年份。但你可能需要根据数据的具体格式和结构调整这些步骤,尤其是关于如何确定某id首次实现债券发行的最多年份的部分。如果`bond_issue`只在发行当年标记为1,则以上方法应直接适用;但如果存在后续年份再次标记的情况,可能需要更复杂的逻辑来确保我们关注的是真正的“首次”发行。

此文本由CAIE学术大模型生成,添加下方二维码,优先体验功能试用



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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-2-8 03:22