楼主: sophia5290
24992 14

[数据管理求助] stata如何实现将后几年的数据用某一年的数据代替 [推广有奖]

11
maodongjun 发表于 2021-8-30 17:35:46
”Bad_boy。 发表于 2019-11-7 15:03
连老师,你太牛了!!
2009年的取值,未必是最小的。

12
套路叔叔 学生认证  发表于 2023-4-20 17:06:19
maodongjun 发表于 2021-8-30 17:35
2009年的取值,未必是最小的。
新指标只存在2009年的值,你说是不是最小的。只是配合着egen函数用而已

13
套路叔叔 学生认证  发表于 2023-4-20 17:10:30
zhangdiyuan 发表于 2020-11-14 10:34
如果填充的不是数据而是字符串该如何处理?
在生成新指标前进行encode,其他操作步骤一样。只是后续如果需要用原字符指标进行匹配时会产生新问题。也不难,因为通过黄老师+encode方法的已经生得到09年的字符-encode-数值三列新指标,且在2009年唯一对应。提取出来进行merge就行

14
赵安豆 发表于 2024-7-9 14:20:25
在Stata中,你可以使用`replace`命令结合条件来实现这个需求。具体来说,如果你想用2009年的v1值填充2010年至2013年缺失的v1值,可以这样做:

```stata
* 假设你的数据集已经打开,并且时间变量叫year

* 先确认一下2009年的v1值确实存在并且你想要用它来填充
* 你可以查看这个值是什么样子
summarize v1 if year == 2009

* 现在,使用replace命令来替换缺失的v1值为2009年的值
replace v1 = v1[_n-1] if year > 2009 & mi(v1)

* 这里的 _n-1 是指当前观察值前一条记录(即上一年的数据)
* mi()函数检查变量是否缺失,如果是,则执行replace操作

* 如果你想要更具体地控制只用2009年的数据填充,可以加上额外的条件
replace v1 = v1 if year == 2009 & _n > _N/6 // 假设2009年是你的数据集中的第_N/6条记录

* 或者更直接地:
sort stock_code year // 先根据股票代码和时间排序
by stock_code: replace v1 = v1[1] if year > 2009 & mi(v1) // 这里v1[1]指的是同股票代码下第一条记录(即2009年的数据)
```

请注意,`replace`命令会直接修改你的数据集。在执行这些操作前最好先保存原始数据或者在副本上进行操作以防万一。

另外,在使用`_n-1` 或者 `[1]` 这样的索引时,请确保你的数据已经按照股票代码和年份正确排序,否则可能会填充错误的数据。

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



15
金融道路上的小算子 学生认证  发表于 2024-8-15 22:35:05
zhangdiyuan 发表于 2020-11-14 10:34
如果填充的不是数据而是字符串该如何处理?
请问你解决了吗?我也有这个疑问

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

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-25 07:24