全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
19691 5
2017-01-09
比如:
name                     var
A                             1
A                             .
B                             2
B                             .
B                             .

想得到:
name                     var
A                             1
A                             1
B                             2
B                             2
B                             2

二维码

扫码加我 拉你入群

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

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

全部回复
2017-1-9 21:58:15
replace var=var[_n-1] if var==.
二维码

扫码加我 拉你入群

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

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

2017-1-14 10:59:18
sort name
by name: replace var=l.var if var==.
这样就会分组完成了,楼主可以试试。不然的话会替换错。比如B的第一个值是缺失值,不加by会把这个缺失值补成A的最后一个值。
二维码

扫码加我 拉你入群

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

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

2021-7-17 21:21:40
dabingpp22 发表于 2017-1-14 10:59
sort name
by name: replace var=l.var if var==.
这样就会分组完成了,楼主可以试试。不然的话会替换错。 ...
你好,请问下,你知道如何在某一行,交换变量的位置么?如下图所示,想要将红色部分的空缺值对应替换成青色圈出的变量 1.png
二维码

扫码加我 拉你入群

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

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

2022-2-28 10:15:23
520wujing 发表于 2021-7-17 21:21
你好,请问下,你知道如何在某一行,交换变量的位置么?如下图所示,想要将红色部分的空缺值对应替换成青 ...
遇到同样的问题,请问你后来怎么解决的呢?
二维码

扫码加我 拉你入群

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

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

2024-5-23 10:57:08
在Stata中,你可以使用`bysort`和`egen`命令来实现这个需求。具体步骤如下:

1. 首先按`name`变量对数据进行排序:
```stata
sort name
```
2. 然后使用`egen`创建新的变量,并设置它的值等于前一行的`var`值:
```stata
egen var_lag = lag(var), by(name)
```
这将为每组`name`的第二行及以后的行填充上一行的`var`值。第一行由于没有前一行的数据,所以会保留原有的`.`。

最终结果就是你想要的格式:每个`name`分组内的`var_lag`变量值都等于其上一行的`var`值。如果需要替换原`var`变量,可以使用`replace`命令:
```stata
replace var = var_lag if var == .
```
这将把所有`.`值替换为`var_lag`的对应值。

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



二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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