楼主: 小鳄鱼a
1464 4

请帮忙看下这个 [推广有奖]

  • 6关注
  • 10粉丝

已卖:280份资源

学科带头人

3%

还不是VIP/贵宾

-

威望
0
论坛币
125 个
通用积分
0.0040
学术水平
40 点
热心指数
45 点
信用等级
43 点
经验
32801 点
帖子
1185
精华
0
在线时间
1539 小时
注册时间
2009-7-16
最后登录
2018-10-5

楼主
小鳄鱼a 发表于 2015-10-29 16:43:09 |AI写论文
50论坛币
只要是name首次出现后,在随后的时间都有观测
关键词:name

沙发
freerunning_sky 在职认证  发表于 2015-10-29 16:43:10
  1. data input;
  2. input year qtr name :$15.;
  3. cards;
  4. 1998        1        张武
  5. 1998        1        张数
  6. 1998        1        张琪
  7. 1998        1        张吧
  8. 1998        2        张三
  9. 1998        2        刘琦
  10. 1998        2        张吧
  11. 1998        3        张生
  12. ;
  13. run;

  14. proc sql;
  15.         create table output as
  16.         select distinct a.*,b.name from input(drop=name) a
  17.         left join input b on a.year>b.year or (a.year=b.year & a.qtr>=b.qtr);
  18. quit;
复制代码

藤椅
scd2009 发表于 2015-10-29 17:11:56
需求说的不是很清楚。。。。

板凳
小鳄鱼a 发表于 2015-11-30 23:16:03
freerunning_sky 发表于 2015-10-29 16:43
请再看一下   ,我的意思是以后连续的时间观测中,数据都有取值   , 例如,数据改成
1998        1        张武
1998        1        张数
1998        1        张琪
1998        1        张吧
1998        2        张三
1998        2        刘琦
1998        2        张吧
2000        3        张生

得到的观测便不连续   后面只是有  2000 3 的观测   没有  1998 3  1998 4 19991 等

报纸
freerunning_sky 在职认证  发表于 2015-12-3 09:27:48
小鳄鱼a 发表于 2015-11-30 23:16
请再看一下   ,我的意思是以后连续的时间观测中,数据都有取值   , 例如,数据改成
1998        1     ...
  1. data input;
  2. input year qtr name :$15.;
  3. cards;
  4. 1998        1        张武
  5. 1998        1        张数
  6. 1998        1        张琪
  7. 1998        1        张吧
  8. 1998        2        张三
  9. 1998        2        刘琦
  10. 1998        2        张吧
  11. 2000        3        张生
  12. ;
  13. run;

  14. proc sort data=input;by descending year descending qtr;run;
  15. data _null_;
  16.         set input(obs=1);
  17.         call symput('max_year',year);
  18.         call symput('max_qtr',qtr);
  19. run;
  20. %put &max_year &max_qtr;
  21. proc sort data=input;by name year qtr;run;
  22.        
  23. data output;
  24.         set input;
  25.         by name year qtr;
  26.         keep name year qtr;
  27.         retain pre_year pre_qtr;
  28.         if first.name then do;
  29.                 pre_year=year;
  30.                 pre_qtr=qtr;
  31.         end;
  32.         output;
  33.         do while(pre_year*4+pre_qtr<&max_year*4+&max_qtr);
  34.                 if pre_qtr=4 then do;
  35.                         pre_qtr=1;
  36.                         pre_year=pre_year+1;
  37.                 end;
  38.                 else pre_qtr=pre_qtr+1;
  39.                 year=pre_year;
  40.                 qtr=pre_qtr;
  41.                 output;
  42.         end;
  43.         proc sort nodupkey;by year qtr name;
  44. run;
复制代码
原来说的不明确

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-4 12:41