今回はfirst, lastについて解説します。
/*first last1*/
data data1;
番号="1111"; 日付="20210331";
output;
番号="1111"; 日付="20210401";
output;
番号="1111"; 日付="20210402";
output;
番号="2222"; 日付="20210331";
output;
番号="2222"; 日付="20210401";
output;
番号="2222"; 日付="20210402";
output;
番号="3333"; 日付="20210331";
output;
番号="3333"; 日付="20210401";
output;
番号="3333"; 日付="20210402";
output;
番号="4444"; 日付="20210331";
output;
番号="4444"; 日付="20210401";
output;
番号="4444"; 日付="20210402";
output;
run;
proc sort data=data1 out=data2 ; by 番号 日付; run;
data data3; set data2; by 番号 日付;
if first.番号 = 1;
run;
- sort におけるby~とfirst, lastにおける by~は基本的に同じである必要がある。
- 番号で昇順に並び替え、同順位なら日付でさらに並べ替える。
/*first last2*/
data data1;
番号="1111"; 日付="20210331";
output;
番号="1111"; 日付="20210401";
output;
番号="1111"; 日付="20210402";
output;
番号="2222"; 日付="20210331";
output;
番号="2222"; 日付="20210401";
output;
番号="2222"; 日付="20210402";
output;
番号="3333"; 日付="20210331";
output;
番号="3333"; 日付="20210401";
output;
番号="3333"; 日付="20210402";
output;
番号="4444"; 日付="20210331";
output;
番号="4444"; 日付="20210401";
output;
番号="4444"; 日付="20210402";
output;
run;
proc sort data=data1 out=data2 ; by 番号 日付; run;
data data3; set data2; by 番号 日付;
if last.番号 = 1;
run;
- sort におけるby~とfirst, lastにおける by~は基本的に同じである必要がある。
- 番号で昇順に並び替え、同順位なら日付でさらに並べ替える。
/*first last3*/
data data1;
番号="1111"; 日付="20210331";
output;
番号="1111"; 日付="20210401";
output;
番号="1111"; 日付="20210402";
output;
番号="2222"; 日付="20210331";
output;
番号="2222"; 日付="20210401";
output;
番号="2222"; 日付="20210402";
output;
番号="3333"; 日付="20210331";
output;
番号="3333"; 日付="20210401";
output;
番号="3333"; 日付="20210402";
output;
番号="4444"; 日付="20210331";
output;
番号="4444"; 日付="20210401";
output;
番号="4444"; 日付="20210402";
output;
run;
proc sort data=data1 out=data2; by 番号 日付; run;
data data3; set data2; by 番号 日付;
if first.日付 = 1;
run;
- sort におけるby~とfirst, lastにおける by~は基本的に同じである必要がある。
- 番号で昇順に並び替え、同順位なら日付でさらに並べ替える。
/*first last4*/
data data1;
番号="1111"; 日付="20210331";
output;
番号="1111"; 日付="20210401";
output;
番号="1111"; 日付="20210402";
output;
番号="2222"; 日付="20210331";
output;
番号="2222"; 日付="20210401";
output;
番号="2222"; 日付="20210402";
output;
番号="3333"; 日付="20210331";
output;
番号="3333"; 日付="20210401";
output;
番号="3333"; 日付="20210402";
output;
番号="4444"; 日付="20210331";
output;
番号="4444"; 日付="20210401";
output;
番号="4444"; 日付="20210402";
output;
run;
proc sort data=data1 out=data2 ; by 番号 日付; run;
data data3; set data2; by 番号 日付;
if last.日付 = 1;
run;
- sort におけるby~とfirst, lastにおける by~は基本的に同じである必要がある。
- 番号で昇順に並び替え、同順位なら日付でさらに並べ替える。
/*first last5*/
data data1;
id="A"; chiku="SHINJUKU1"; 数字=1;
output;
id="A"; chiku="SHINJUKU1"; 数字=2;
output;
id="A"; chiku="SHINJUKU2"; 数字=3;
output;
id="B"; chiku="ICHIGAYA1"; 数字=4;
output;
id="B"; chiku="ICHIGAYA1"; 数字=5;
output;
id="B"; chiku="ICHIGAYA2"; 数字=6;
output;
id="C"; chiku="SHIBUYA"; 数字=7;
output;
run;
proc sort data=data1 out=data2 ; by id chiku; run;
data data3; set data2; by id chiku;
if first.chiku = 1;
run;
- sort におけるby~とfirst, lastにおける by~は基本的に同じである必要がある。
- idで昇順に並び替え、同順位ならchikuでさらに並べ替える。
実はこれ、以前紹介したNODUPKEYと同じ挙動になります。