1

これは非常に単純なことのように思えますが、sas データステップの「by ステートメント」が実際に何をしているのか説明できません。いつ使用する必要があるかはわかっていますが、何をしているのかわかりません。

以下の例では、first.var と last.var の仮想 sas 列がその値を持っている場合の意味を理解しています。by ステートメントは、var initial と metal の周りにこれらの仮想列を作成していますか? 次に、sas はデータセット全体を 1 回スキャンしていますか?

data jewelers ;
  input id initial $ metal $ ;
datalines;
456 D Gold
456 D Silver
123 L Gold
123 L Copper
123 L PLatinum
567 R Gold
567 R Gold
567 R Gold
345 A Platinum
345 A Silver
345 A Silver
;

proc sort ;
  by initial metal ;
run;

data dups;
  set jewelers ;
  by initial metal ;                           
  if not (first.metal and last.metal) then output;
run;

print dups を実行すると、次のことが期待されます。

567 R Gold
567 R Gold
567 R Gold
345 A Silver
345 A Silver
4

2 に答える 2