ソート済のデータセット列について、その値をもつ「最初の行」や「最後の行」だけで処理を行う

proc sort data=sashelp.fish out=work.fish_sorted;
by species;
run;

data work.fish;
set work.fish_sorted(where=(not missing(Weight))); /* 欠損値の行を削除 */
by species; /* species列でグループ化 */

/* 計算用の列を初期化 */
if first.species then do;
count = 0;
weight_sum = 0;
end;

/* グループ内の行について、件数と合計を計算 */
retain count weight_sum;
count = count + 1;
weight_sum = weight_sum + Weight;

/* 平均値を計算し、行を出力 */
if last.species then do;
weight_avg = round(weight_sum / count, 0.1);
output;
end;

/* 出力したい列を指定 */
keep species count weight_sum weight_avg; 
run;

Revision #4
Created 28 September 2024 05:37:40 by nonoha
Updated 28 September 2024 05:51:20 by nonoha