|
沙发

楼主 |
发表于 2004-10-25 05:25:35
|
只看该作者
细节没考虑,大概是这个意思
data temp;
input sta_id year m d cl1 cl2 cl3 ;
datalines;
50353 1991 05 01 72 071 063
50353 1991 05 02 080 067 040
50353 1991 05 03 103 111 067
50353 1991 05 04 087 089 065
50353 1991 05 05 093 080 125
50353 1991 05 06 059 051 043
52818 1992 01 01 -061 -044 -033
52818 1992 01 02 -065 -047 -035
52818 1992 01 03 -067 -049 -036
52818 1992 01 04 -060 -047 -037
;
run;;
proc print data=temp;
run;
方法一:
proc means data=temp;
var cl1 cl2 cl3;
by sta_id year m;
run;
方法二:
proc sql;
select * ,mean(cl1) as cl1mean, mean(cl2) as cl2mean ,mean(cl3) as cl3mean
from temp
group by sta_id ,year, m;
quit;
方法三:
proc sort data=temp;
by sta_id year m;
run;
data xyz;
set temp;
by sta_id year m;
if first.sta_id=1 or first.m=1 then
do;
cl1tot=0;
cl2tot=0;
cl3tot=0;
cl1mean=0;
cl2mean=0;
cl3mean=0;
n=0;
end;
cl1tot+cl1;
cl2tot+cl2;
cl3tot+cl3;
n+1;
if last.sta_id=1 or last.m=1 then
do;
cl1mean=cl1tot/n;
cl2mean=cl2tot/n;
cl3mean=cl3tot/n;
output;
end;
run; |
|