好的,这似乎是一件非常简单的事情,但我无法解释 sas datastep 中的“by statement”到底在做什么。我知道什么时候需要使用它,但我不确定它在做什么。
在下面的示例中,我了解 first.var 和 last.var 的虚拟 sas 列是什么,当它具有它的值时。by 语句是否在 var initial 和 metal 周围创建了这些虚拟列?那么sas是扫描整个数据集一次呢?
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;
如果我 proc print dups 我希望这样:
567 R Gold
567 R Gold
567 R Gold
345 A Silver
345 A Silver