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】WORKライブラリの性質について解説

今回はWORKライブラリについて解説します。 libnameを使わなくてもデフォルトで存在するライブラリです。 そのため、libnameを使わずにworkライブラリを使用することができます。 /* l …

【SAS】DATAステートメントは複数データセットを出力できる。

今回はDATAステートメントで複数データセットを出力する方法について解説します。 /* data2 data3_1 */ data data1 ; id1=”1111″; id2=”1111″; id …

【SAS】%MACROはマクロを定義することができる。【%MEND】

今回はマクロについて解説していきたいと思います。 %macro data1; data data1 ; id1=”1111″; id2=”1111″; id3=”1111″; output; id1= …

【SAS】データセットのエンコードを答えさせる問題【CONTENTS】【SAS Base Programming対策7】

今回はデータセットのエンコードを答えさせる問題について解説します。SAS Base Programming試験を受けたときに出題されました。 data data1; Id1=1111; Id2=111 …

【SAS】OPTIONS NOMPRINT NOSOURCEはログに出力されるソースコードを非表示にできる。

今回はOPTIONS NOMPRINT NOSOURCEについて解説します。 /*nomprint nosource_1 */ options nomprint nosource; data data …