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 Base Programmingの資格を取りました。試験の流れを解説します。[出題された問題のリークも]

仕事でSASというプログラミング言語を使用してるのですが、 SASの資格を欲しいと思って先日、SASの試験Base Programmingを受けてきました。 2021年内に2回受験をして、 1回目は不 …

【SAS】足し算。その2(SUM関数を用いた計算)

今回はSUM関数を用いた足し算について解説します。  (前回は+演算子を用いた足し算について解説しました。⇒【SAS】足し算。その1(+演算子を用いた計算)) /* sum */ data …

【SAS】%PUTステートメントは文字列をログに出力する。その1

今回は%PUTについて解説します。 /* %put */ %put CHAR; %putにより、文字列をログに出力できる。 /* %let */ %let CHAR = aaaa ; %put &am …

【SAS】%MACROはマクロを定義することができる。その4 引数違いの同名マクロは区別できない。【%MEND】

今回は引数違いの同名マクロについて解説していきたいと思います。(事前に読んでおきたい記事:【SAS】%MACROはマクロを定義することができる。その3 マクロには引数を設定できる。【%MEND】 | …

【SAS】RENAMEの使い方を解説

今回はRENAMEの使い方を解説していきます。 (参考:【SAS】ATTRIBとRENAMEを同時に使うときの注意点 | ビジネスイッチ (how-to-business.com)) /* renam …