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