好吧,這似乎是一件非常簡單的事情,但我無法解釋sas datastep中的「通過聲明」是在做什麼。我知道什麼時候需要使用它,但我不確定它在做什麼。什麼是在sas數據步驟中真正做的陳述?
在下面的例子中,我明白了first.var和last.var的虛擬sas列是什麼時候它具有它所做的值。 By語句圍繞var初始和金屬創建這些虛擬列?然後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打印的DUP我想到這一點:
567 R Gold
567 R Gold
567 R Gold
345 A Silver
345 A Silver
在您的示例中,'first.id'和'last.id'未初始化,因爲它們不出現在'by'語句中。要查看創建了哪些隱藏變量,請在'by'語句後面添加'put _all_;'語句。 (只對小數據集執行此操作,因爲它有可能填滿日誌)。 – mjsqu