2011-11-16 35 views
2

我有一個按x1和x2排序的數據集。對於每個x1的值,我只想打印x2的最後一個值。我該怎麼做呢?難道是這樣的:SAS中的last.group聲明

if last.x2 then print;

回答

3

Itzy接近,但需要改變指X1,就像下面的最後一條語句:

data tmp; 
set mydataset; 
by x1 x2; 
if last.x1; 
run; 

proc print data=tmp; run; 
+0

謝謝,糾正了我的答案。 – itzy

5

你說的沒錯,你可以使用last聲明,但你不能在打印語句中使用它。試試這個:

data tmp; 
set mydataset; 
by x1 x2; 
if last.x1; 
run; 

proc print data=tmp; run; 
+0

這是行不通的。它仍然打印出x1和x2的所有值,而不是x1的最大值爲x2的值。 – Trevor

0

這將打印有X2的最大價值一行。

proc sort data=mydataset; 
    by x2; 
run; 

data tmp; 
    set mydataset end=eof; 
    if eof then do; 
    output; 
    end; 
run; 

proc print data=tmp; 
run; 

請注意,如果有多個具有最大值的行,則只會打印其中一個行。