全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 统计软件培训班VIP答疑区
2669 3
2010-11-12
code      YEAR            
     1       2001                  
     1       2002                  
     1       2003                 
     2       2001              
     2       2002         
     2       2003         
如何生成一列新列newyear,这一列为year向前滚动三年的年份,也就是使每一行都增加很多行。
比如:code=1 year=2001时,另外生成了code=1 nyear=2000;code=1 nyear=1999;code=1 nyear=1998使得一行变三行呢?
有没有什么程序或者命令呢?
类似于:生成一列nyear,nyear=year-i  i=1,2,3
二维码

扫码加我 拉你入群

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

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

全部回复
2010-11-14 09:03:39
你的最终目的是什么?
对于 code=1,year=2002,是否也需要向前滚动?

还请把问题描述的更详细一些,以免产生误解。
二维码

扫码加我 拉你入群

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

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

2010-11-15 10:40:16
是的,code=1 year=2002也要向前滚动,每一行都要向前滚动生成新的三年。
二维码

扫码加我 拉你入群

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

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

2010-11-16 10:05:31
命令如下:

*-http://www.pinggu.org/bbs/thread-959882-1-1.html


   clear
   input code     year            
     1       2001                  
     1       2002                  
     1       2003                 
     2       2001              
     2       2002         
     2       2003         
   end
   
   expand 3, ge(s)
   sort code year
   bysort code year: gen sum = sum(s) if s==1
   sort code year
   gen nyear = year-sum
   replace nyear=year if nyear==.
   sort code year nyear
   list code year nyear, clean noobs


*-结果如下:


    code   year   nyear  
       1   2001    1999  
       1   2001    2000  
       1   2001    2001  
       1   2002    2000  
       1   2002    2001  
       1   2002    2002  
       1   2003    2001  
       1   2003    2002  
       1   2003    2003  
       2   2001    1999  
       2   2001    2000  
       2   2001    2001  
       2   2002    2000  
       2   2002    2001  
       2   2002    2002  
       2   2003    2001  
       2   2003    2002  
       2   2003    2003
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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