2016-04-07 18 views
0

SAS'da yeni ve biraz sorunum var. Dizin içindeki dosya adlarındaki alt dizeden en büyük değeri seçmeyi deniyorum. neden bunu yapamıyorum Sizin değişken namesSAS'ta en yüksek değerleri bulma (İlk 3)

parent=directory 

data files_and_folders; 
keep num; 
    did=dopen("parent"); 
    if dnum(did)>3 then do; 
     do i=1 to dnum(did); 
     names=int(substr(dread(did,i),9,8)); 
     num=largest(3,names); 
     output; 
end; 
end; 
output; 
run; 

returns 
names: 
20160322 
20160323 
20160324 
20160325 
20160325 

but returns null value for num 
thanks for help 
+1

set deyimindeki obs = 3 ile burada çok benzer bir soru var. https://communities.sas.com/t5/Base-SAS-Programming/Top-and-bottom-2-by-city-using-a-data-step/m-p/262035 – Reeza

cevap

1

tek sayıdır. largest, değerler listesindeki en büyük değeri verir. , ör.

k=1 
n=largest(k, 1, 2, 3, 4); 

sonucu: n = 4

k=2 
n=largest(k, 1, 2, 3, 4); 

sonuç: n = 3

Sen birinin bir listenin dışında üçüncü büyük değeri elde etmeye çalışıyorlar. Bu bir kayıpla sonuçlanır.

Tüm dosyayı çıkarmanız gerekiyor. by descending names'u sıralayın. Ardından ilk üç gözlemle sınırlayın, örn.

+0

tamam, yardım için teşekkürler! – aola

İlgili konular