SAS中文论坛

标题: 日期相关问题 [打印本页]

作者: shiyiming    时间: 2011-3-30 09:27
标题: 日期相关问题
先提出问题,如下例子:
[code:1axe8t81]data year;
input y1-y6;
informat  y1-y6 yymmdd8.;
format          y1-y6 yymmdd10.;
datalines;
20100908        20100918        20101008        20101019        20101208      .
20100106        20100908        20101209                .               .      20100604
20100306        20100405        20100908        20100707                 .       .
20100505        20100610        20100915                .        20100710     .
;
run;
proc print;run;
*Q1:在同一个记录(同一行内)检出最大的日期,生成变量y_max(yymmdd);
*Q2:在同一个记录(同一行内)检出最后一次的日期记录,生成变量y_last(yymmdd);
*Q3:在同一个记录(同一行内),合计日期的次数(频数),生成变量y_freq;
*Q4:若有缺失值,则生成新变量y_mis(yymmdd),其值为排在其前面变量的取值;[/code:1axe8t81]
四个问题,期待回复,先谢谢了。
作者: shiyiming    时间: 2011-3-30 13:14
标题: Re: 日期相关问题
[code:3azun55j]data year(drop=i);
    input (y1-y6) (:yymmdd8.);
    array arr_y{*} y1-y6;
    y_freq=n(of arr_y(*));
    y_max=max(of arr_y(*));
    do i=1 to dim(arr_y);
        y_last=ifn(missing(arr_y(i)),y_last,arr_y(i));
        y_mis=ifn(i gt 1 and missing(arr_y(i)),min(i,y_mis),y_mis);
    end;
    y_mis=arr_y(y_mis-1);
    format y1-y6 y_max y_last y_mis yymmdd10.;
datalines;
20100908   20100918   20101008   20101019   20101208      .
20100106   20100908   20101209      .               .      20100604
20100306   20100405   20100908   20100707            .       .
20100505   20100610   20100915      .        20100710     .
;[/code:3azun55j]
作者: shiyiming    时间: 2011-3-31 06:58
标题: Re: 日期相关问题
这是一个经典的array问题了,hopewell的回答也是经典了。只是有点糊涂:这个y_mis是唯一的吗?




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2