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】TITLEステートメントは「結果」にタイトルを付けられる

今回はTITLEステートメントについて解説します。 data data1; 番号=”AAAAAA”; コード=”02″; 金額=1999; output; 番号=”AAAAAA”; コード=”05″; …

【SAS】%MACROはマクロを定義することができる。その5 =を使うと数を渡す引数,数を受け取る引数を指定できる。【%MEND】

今回はマクロ引数に「=」を用いる方法について解説していきたいと思います。(事前に読んでおきたい記事:【SAS】%MACROはマクロを定義することができる。その3 マクロには引数を設定できる。【%MEN …

【SAS】SQLプロシージャはSQLを実行できる。

今回はSQLプロシージャについて解説します。 /* sql_1 */ data data1; Id1=1111; Id2=1111; Id3=1111; output; Id1=2222; Id2=2 …

【SAS】UPCASE関数は文字列を大文字化する。

今回はUPCASE関数について解説します。 /* upcase */ data data1; Id1=1111; char1=”US”; char2=”aaa”; output; Id1=2222; …

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

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