これは覚えておくとお得かもしれません。
set data; by variable; if last.variable then output;
の仲間ですね。
data sample; input x y z @@; cards; 1 2 3 4 5 6 7 8 9 ; data sample_final; retain xx xy xz yy yz zz 0; set sample end = final; xx = xx + x * x; xy = xy + x * y; xz = xz + x * z; yy = yy + y * y; yz = yz + y * z; zz = zz + z * z; if final then output; proc print; run;