楼主: On_Air
4656 8

[数据管理求助] 请教stata如何让某组中某数字之前的缺失值全部替换为固定值? [推广有奖]

  • 6关注
  • 6粉丝

已卖:1223份资源

副教授

50%

还不是VIP/贵宾

-

威望
0
论坛币
7861 个
通用积分
72.3722
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
3549 点
帖子
250
精华
0
在线时间
1423 小时
注册时间
2013-9-27
最后登录
2025-12-23

楼主
On_Air 学生认证  发表于 2017-11-11 09:20:49 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
数据如下:需要将每组中(按name分组)100之前的缺失值全部替换为1,请教一下如何操作呢?
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input byte name int year byte zhi
  4. 4 2002   .
  5. 4 2003   .
  6. 4 2004   .
  7. 4 2005   .
  8. 4 2006   .
  9. 4 2007   .
  10. 4 2008 100
  11. 5 2002   .
  12. 5 2003   .
  13. 5 2004   .
  14. 5 2005 100
  15. 5 2006   .
  16. 5 2007   .
  17. 5 2008   .
  18. end
复制代码
结果如下:
  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input byte name int year byte zhi
  4. 4 2002   1
  5. 4 2003   1
  6. 4 2004   1
  7. 4 2005   1
  8. 4 2006   1
  9. 4 2007   1
  10. 4 2008 100
  11. 5 2002   1
  12. 5 2003   1
  13. 5 2004   1
  14. 5 2005 100
  15. 5 2006   .
  16. 5 2007   .
  17. 5 2008   .
  18. end
复制代码
我现在的代码如下,但并没有解决这个问题!
  1. by name (year): replace zhi=1 if zhi[_n+1] ==100 & missing(zhi)
复制代码



二维码

扫码加我 拉你入群

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

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

关键词:Stata tata 缺失值 generated generate

回帖推荐

黃河泉 发表于6楼  查看完整内容

Nick Cox 建议:

蓝色 发表于4楼  查看完整内容

不一定好 但容易理解,而且都是Stata的最基本的命令,

黃河泉 发表于2楼  查看完整内容

試試(可能有更好方法)

沙发
黃河泉 在职认证  发表于 2017-11-11 10:22:55
試試(可能有更好方法)
  1. gen x = zhi/100
  2. bys name (year): mipolate x year, gen(z) b
  3. replace z = 100 if x == z & !missing(z)
复制代码

藤椅
On_Air 学生认证  发表于 2017-11-11 15:18:45
黃河泉 发表于 2017-11-11 10:22
試試(可能有更好方法)
谢谢黄老师!

板凳
蓝色 发表于 2017-11-11 17:35:47
不一定好
但容易理解,而且都是Stata的最基本的命令,
  1. bys name:  gen id0=_n
  2.            gen id1=id0 if zhi==100
  3. bys name: egen id2=mean(id1)
  4. replace zhi=1  if id0<id2
复制代码


报纸
On_Air 学生认证  发表于 2017-11-11 20:23:11
蓝色 发表于 2017-11-11 17:35
不一定好
但容易理解,而且都是Stata的最基本的命令,
确实很巧妙,谢谢您!

地板
黃河泉 在职认证  发表于 2017-11-12 11:56:53
Nick Cox 建议:
  1. bysort name (year): replace zhi = 1 if sum(missing(zhi)) == _n
复制代码

7
On_Air 学生认证  发表于 2017-11-12 14:31:03
黃河泉 发表于 2017-11-12 11:56
Nick Cox 建议:
好的,感谢Nick Cox老师 如此简洁的方法,再次谢谢您!

8
蓝色 发表于 2017-11-12 21:10:34
关键是大家都能想到这些命令

9
On_Air 学生认证  发表于 2017-11-13 10:07:47
蓝色 发表于 2017-11-12 21:10
关键是大家都能想到这些命令
基本命令的组合也能实现复杂的过程,只是要动脑子了,哈哈!

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

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