オブザベーション(レコード)を複製して空行を作る

スポンサーリンク

ここで書いたoutputステートメントを利用してオブザベーションを複製することができます。
RTFファイル(帳票)を作成する際に、元データとしては空行が含まれたデータセットが必要になることがあります。

元データ
data test;
  sortkey = 1;
  name = "TEAE";
  count_Dose = 100;
  count_Placebo = 90;
  output;

  sortkey = 2;
  name = "SOC1";
  count_Dose = 80;
  count_Placebo = 40;
  output;

  sortkey = 3;
  name = "PT1";
  count_Dose = 50;
  count_Placebo = 25;
  output;

  sortkey = 4;
  name = "PT2";
  count_Dose = 30;
  count_Placebo = 15;
  output;
run;
空行(その1)

全変数をnullにして複製しています。

data out1;
  set test;

  if sortkey = 1 then do;
    output;
    sortkey = .;
    name = "";
    count_Dose = .;
    count_Placebo = .;
    output;
  end;

  else output;
run;

1つめのoutput:sortkey=1をそのまま出力
2つめのoutput:sortkey=1の変数を加工して出力(空行)
3つめのoutput:sortkey=1以外を出力
このデータセットではoutputを記述しているので最後のoutputがないとsortkey=1以外は出力されません(明示的なoutput)。

空行(その2)

帳票として出力する変数のみnullにして複製しています。
こちらのほうが一般的です。

data out2;
  set test;

  if sortkey = 1 then do;
    output;
    name = "";
    count_Dose = .;
    count_Placebo = .;
    output;
  end;

  else output;
run;

コメント