かきためぬ

書き溜めたいきもちは山々だけど

【SAS】1つのDATAステップで複数のデータセットを作成【OUTPUTステートメント】

条件ごとにデータセットを分けたいとき、OUTPUTステートメントを使用すると1つのDATAステップで作成できる。


例えば、未成年者と成年者のデータが混ざったデータセットを、それぞれ分けたいとする。
f:id:hhohh:20161211140412p:plain

/*元データ作成*/
data sample1;
  length id 8. name  $10. age 8.;
  input id name$ age;
  datalines;
  1 Rose 5
  2 Nicole 20
  3 Stephen 14
  4 Teresa 37
  5 Brenda 42
  ;
run;

以下の2つの書き方だと、後者であればコードの冗長が防げる。

/*OUTPUTステートメントを使用しない例(2つのDATAステップが必要)*/
data minors;
  set sample1;
  if .<age<20;
run;

data majors;
  set sample1;
  if 20<=age;
run;
/*OUTPUTステートメントを使用する例(1つのDATAステップが必要)*/
data minors majors;
  set sample1;
  *20歳未満ならデータセットminorsにoutput;
  if .<age<20 then output minors;
  *20歳以上ならデータセットmajorsにoutput;
  if 20<=age  then output majors;
run;
  • 結果は同じ

f:id:hhohh:20161211141138p:plain