proc format;
value qtrfmt ’01jan2002’ d - ’31mar2002’ d = ’1’
’01apr2002’ d - ’30jun2002’ d = ’2’
’01jul2002’ d - ’30sep2002’ d = ’3’
’01oct2002’ d - ’31dec2002’ d = ’4’;
run;
data company.quarters(keep=count order_date
rename=(order_date=Quarter));
set retail.orders;
format order_date qtrfmt.;
by order_date groupformat notsorted;
where year(order_date)=2002;
if first.order_date then Count=0;
Count +1;
if last.order_date;
run;
我对这段程序有两个问题:
1) 我知道这三行
if first.order_date then Count=0;
Count +1;
if last.order_date;
是用来统计每个季度的购买量的。但我不太懂得是这个 “ if last.
order_date;”
起得是什么作用?
2)关于这个SAS程序的执行顺序可不可以这样理解:
by order_date groupformat notsorted;
执行完后,数据retail.orders已经按order_date进行季度 分组了
if first.order_date then Count=0;
Count +1;
if last.order_date;
只是依次对分组后的每一行数据进行判断。
3)year(order_date)=2002这里的year( ) 是一个函数吗?
a*****3 发帖数: 601
2
放点数据近来罢
d******m 发帖数: 2333
3
if last是只output那个group里面的最后一行。
year是个function,提取年份。