RETAIN SAS SAS Base Programming

【SAS】オブザベーションを跨いだ計算【RETAIN】【SAS Base Programming対策4】

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


/* retain */
data data1;
  Id1=1111; Id2=1111; Id3=1111;
    output;
  Id1=2222; Id2=2222; Id3=2222;
    output;
  Id1=3333; Id2=3333; Id3=3333;
    output;
run;

data data2; set data1;
	retain Id4 0;
	Id4 = Id4 + Id3;
run;

  • retainにより、Id4に初期値0を設定できる。
  • Id4 = Id4 + Id3によりレコードの数値を足すことができる。

/* retain null */
data data1;
  Id1=1111; Id2=1111; Id3=1111;
    output;
  Id1=2222; Id2=2222; Id3=.;
    output;
  Id1=3333; Id2=3333; Id3=3333;
    output;
run;

data data2; set data1;
	retain Id4 0;
	Id4 = Id4 + Id3;
run;

  • retainにより、Id4に初期値0を設定できる。
  • Id4 = Id4 + Id3によりレコードの数値を足すことができる。
  • nullは正しく計算されない。

/* Id4 + Id3; */
data data1;
  Id1=1111; Id2=1111; Id3=1111;
    output;
  Id1=2222; Id2=2222; Id3=2222;
    output;
  Id1=3333; Id2=3333; Id3=3333;
    output;
run;

data data2; set data1;
	Id4 + Id3;
run;

  • Id4 = Id4 + Id3とほぼ同じ動き。
  • Id4 + Id3によりレコードの数値を足すことができる。
  • 最初のId4には0が設定される。(?)

/* Id4 + Id3; null */
data data1;
  Id1=1111; Id2=1111; Id3=1111;
    output;
  Id1=2222; Id2=2222; Id3=.;
    output;
  Id1=3333; Id2=3333; Id3=3333;
    output;
run;

data data2; set data1;
	Id4 + Id3;
run;

  • Id4 = Id4 + Id3とほぼ同じ動き。
  • Id4 + Id3によりレコードの数値を足すことができる。
  • 最初のId4には0が設定される。(?)
  • nullが有っても正しく計算される。

/* Id4 = Id4 + Id3 */
data data1;
  Id1=1111; Id2=1111; Id3=1111;
    output;
  Id1=2222; Id2=2222; Id3=2222;
    output;
  Id1=3333; Id2=3333; Id3=3333;
    output;
run;

data data2; set data1;
	Id4 = Id4 + Id3;
run;

  • Id4 = Id4 + Id3でレコードの数値を足そうとしている。
  • Id4の初期値はnull(?)
  • nullがあると正しく計算されない。

/* Id4 = Id4 + Id3; null */
data data1;
  Id1=1111; Id2=1111; Id3=1111;
    output;
  Id1=2222; Id2=2222; Id3=.;
    output;
  Id1=3333; Id2=3333; Id3=3333;
    output;
run;

data data2; set data1;
	Id4 = Id4 + Id3;
run;

  • Id4 = Id4 + Id3でレコードの数値を足そうとしている。
  • Id4の初期値はnull(?)
  • nullがあると正しく計算されない。

/* retain Id4 + Id3; */
data data1;
  Id1=1111; Id2=1111; Id3=1111;
    output;
  Id1=2222; Id2=2222; Id3=2222;
    output;
  Id1=3333; Id2=3333; Id3=3333;
    output;
run;

data data2; set data1;
	retain Id4 0;
	Id4 + Id3;
run;

  • Id4に初期値0を設定。
  • Id4 + Id3によりレコードの数値を足すことができる。
  • Id4 = Id4 + Id3とほぼ同じ動き。

/* retain Id4 + Id3 null */
data data1;
  Id1=1111; Id2=1111; Id3=1111;
    output;
  Id1=2222; Id2=2222; Id3=.;
    output;
  Id1=3333; Id2=3333; Id3=3333;
    output;
run;

data data2; set data1;
	retain Id4 0;
	Id4 + Id3;
run;

  • Id4に初期値0を設定。
  • Id4 + Id3によりレコードの数値を足すことができる。
  • Id4 = Id4 + Id3とほぼ同じ動き。
  • nullが有っても正しく計算される。

/* retain 1 */
data data1;
  Id1=1111; Id2=1111; Id3=1111;
    output;
  Id1=2222; Id2=2222; Id3=2222;
    output;
  Id1=3333; Id2=3333; Id3=3333;
    output;
run;

data data2; set data1;
	retain Id4 1;
	Id4 = Id4 + Id3;
run;

  • retainにより、Id4に初期値1を設定。
  • Id4 = Id4 + Id3によりレコードの数値を足すことができる。

-RETAIN, SAS, SAS Base Programming

執筆者:


comment

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

関連記事

【SAS】SASで良く使うテクニック。その5 「SUM関数」~データセットの差分がいくつあるのか数えたい時~【Excel】

今回はSASで良く使うテクニックということで、データセットの差分がいくつあるのか数えたいときは「SUM関数」が役に立つ理由を解説していきます。 (参考:【SAS】SASで良く使うテクニック。その1 E …

【SAS】OUTPUTとDELETEの「明示的な使い方」「暗黙的な使い方」

今回はOUTPUTとDELETEにスポットを当てていきたいと思います。 /* output, delete無し */ data data1; Id1=1111; Char1=”AAAA”; outpu …

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

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

【SAS】SUMは足し算をする。その2【要約関数】【SQL】

今回もSQLのSUM(要約関数)について解説します。 過去記事でも、SQLのSUM関数について取り上げました。【SAS】SUMは足し算をする。その1【SQL】 | ビジネスイッチ (how-to-bu …

【SAS】^=(ノットイコール)

今回は^=について解説します。 /* ^=”” */ data data1; id=”A”; chiku=”SHINJUKU”; output; id=”B”; chiku=”ICHIGAYA”; o …