全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
1099 6
2013-12-22
悬赏 10000 个论坛币 已解决
有如下格式数据
          var1   var2   var3
1          1
2          1.5
3          6
4          8
5          .
6          .
7          .
8          .
9          6
10       8.2
.           
.           
.           
n         

现需要在var2列生成var1[_n+5],如果var1[_n+5]是缺失值,则等于var1[_n+4],如果var1[_n+4]也是缺失值,则等于var1[_n+3],以此类推,直到找到有数值的为止。
在var3列生成除去本行观察值之外的var1列的中值。

用以下数据举例,按上述规则,var2,var3的值应如下所示:
          var1      var2       var3
1          1           8           6
2          1.5        8           6
3          3.6        8           6
4          8           6          3.6
5          .          8.2        (6+3.6)/2  
6          .          8.2        (6+3.6)/2
7          .          8.2        (6+3.6)/2
8          .          8.2        (6+3.6)/2
9          6         8.2        (6+3.6)/2
10       8.2        8.2         3.6


上述问题大家有什么比较好的方法吗?观察值可能众多,因此也需要考虑运行速度的问题
二维码

扫码加我 拉你入群

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

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

全部回复
2013-12-22 05:04:50
复制代码
二维码

扫码加我 拉你入群

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

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

2013-12-22 09:19:17
复制代码
二维码

扫码加我 拉你入群

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

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

2013-12-22 09:23:51
qui sum var1 if _n~=`i',d
qui replace var3=r(p50) in `i'

也可以改为
qui centile var1 if _n~=`i'
qui replace var3=r(c_1) in `i'
二维码

扫码加我 拉你入群

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

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

2013-12-22 09:46:30
现需要在var2列生成var1[_n+5],如果var1[_n+5]是缺失值,则等于var1[_n+4],如果var1[_n+4]也是缺失值,则等于var1[_n+3],以此类推,直到找到有数值的为止。

如果连续6个以上是缺失值,需要继续回溯取值吧?
二维码

扫码加我 拉你入群

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

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

2013-12-22 09:50:43
dxystata 发表于 2013-12-22 09:19
复制代码
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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