楼主: shentanming
805 6

[编程问题求助] 如图,我计划生成一列want_idu,让2002年以后的want_idu全部都等于2002年的idu [推广有奖]

  • 5关注
  • 1粉丝

已卖:3份资源

硕士生

56%

还不是VIP/贵宾

-

威望
0
论坛币
688 个
通用积分
1.0016
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
1942 点
帖子
90
精华
0
在线时间
217 小时
注册时间
2010-12-29
最后登录
2020-7-10

楼主
shentanming 学生认证  发表于 2019-11-15 11:33:17 |AI写论文
30论坛币
问题由来:
处理某数据库时,2003年应该用新行业代码,但是一些企业信息滞后,仍然采用2002年以前的旧行业代码。所以将新行业代码折换成旧行业代码,这些2003年=2002年的值,就不要执行replace,以免多度误replace。

问:如图,我计划生成一列want_idu,让2002年以后的want_idu全部都等于2002年的idu

然后
replace 行业代码=旧 if year > 2002 & 行业代码!= want_idu

现在问题是如何生成wan_idu?

如图,并且示范数据如下:
aaa行业代码提问.png

  1. * Example generated by -dataex-. To install: ssc install dataex
  2. clear
  3. input str1 ID int(year idu want_idu)
  4. "1" 2000  11  11
  5. "1" 2001  22  22
  6. "1" 2002  22  22
  7. "1" 2003  44  22
  8. "1" 2004  44  22
  9. "1" 2005  44  22
  10. "2" 2000 111 111
  11. "2" 2001 333 333
  12. "2" 2002 333 333
  13. "2" 2003 333 333
  14. "2" 2004 333 333
  15. "2" 2005 444 333
  16. end
复制代码



最佳答案

沙发
黃河泉 在职认证  发表于 2019-11-15 11:33:18
试试
  1. bys ID (year): replace idu = idu[_n-1] if idu != idu[_n-1] & year > 2002
复制代码
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
shentanming + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

藤椅
fuganggangxx 在职认证  发表于 2019-11-15 12:37:06
楼主没有讲清楚,想确认一下,是不是原来就有idu变量,现在要生成新变量want_idu,使其等于idu
如果是这样子的话,clonevar want_idu = idu 即可生成 

板凳
shentanming 学生认证  发表于 2019-11-15 13:19:38
fuganggangxx 发表于 2019-11-15 12:37
楼主没有讲清楚,想确认一下,是不是原来就有idu变量,现在要生成新变量want_idu,使其等于idu
如果是这样子 ...
idu与want_idu不相等呢。如图。

报纸
sungmoo 发表于 2019-11-15 19:09:36
bys ID (year): g want_idu=(year<2002)*idu+sum((year==2002)*idu)
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
shentanming + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

地板
shentanming 学生认证  发表于 2019-11-15 21:23:02
黃河泉 发表于 2019-11-15 18:14
试试
非常感谢~~

7
shentanming 学生认证  发表于 2019-11-15 21:23:31
sungmoo 发表于 2019-11-15 19:09
bys ID (year): g want_idu=(year
非常感谢!

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

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