FIRST, LAST SAS

【SAS】FIRST, LASTは重複を削除しユニーク化する

投稿日:2021年10月23日 更新日:

今回は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と同じ挙動になります。

-FIRST, LAST, SAS

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

【SAS】SETステートメントに複数データセットを設定すると縦結合できる

今回はSETについて解説します。 /* 1~7 */ data data1; Id1=1111; Char1=”AAAA”; output; Id1=2222; Char1=”BBBB”; outpu …

【SAS】SASで良く使うテクニック。その9 「Alt+E+S+V+E」~縦横の並び替えを行いたいとき~【Excel】

今回はSASで良く使うテクニックということで、縦横の並び替えを行いたい時は、「Alt+E+S+V+E」が役に立つ理由を解説していきます。 具体的な使用場面は、 データセットの場合、カラムは横並びですが …

【SAS】SASで良く使うテクニック。その10 「矩形選択」~インデントを入れたい時など~【サクラエディタ】

今回はSASで良く使うテクニックということで、ソースコードにインデントを挿入したい時は、「矩形選択」が役に立つ理由を解説していきます。 「矩形選択」は、インデントの挿入以外にも、同じ文字数分削除をした …

【SAS】SASで良く使うテクニック。その8 「=」~修正前後のプログラムを比較したい時~【Excel】【VBA】

今回はSASで良く使うテクニックということで、修正前後のプログラムを比較したい時は、「=」が役に立つ理由を解説していきます。(このテクニックはコーディングなら、SASに限らず、VBAでも他のどの言語で …

【SAS】SAS日時値からSAS時間値に変換する方法【TIMEPART】【DATETIME】【TIME】

今回はDATETIMEでSAS日時値を取得した後、SAS時間値に変換する方法について解説していきます。 (つまり、DATETIMEの値からTIMEの値に変換する) (DATETIME:【SAS】DAT …