2016-04-06 11 views
0

Aşağıdaki veri kümesini oluşturmak istiyorum. 1-84 yazmak yerine, bunu yapmanın daha iyi bir yolu var mı? Teşekkürler.SAS, (tekrar) sıra numarası oluşturmak, zarif bir şekilde

data test; input Index @@; datalines; 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 
81 82 83 84 
; run; 

Ayrıca, aşağıdaki gibi bir makro değişkenim var. Yazmanın daha iyi bir yolu?

%let Term= 
24 24 24 24 24 24 24 24 24 24 24 24 
36 36 36 36 36 36 36 36 36 36 36 36 
48 48 48 48 48 48 48 48 48 48 48 48 
60 60 60 60 60 60 60 60 60 60 60 60 
66 66 66 66 66 66 66 66 66 66 66 66 
72 72 72 72 72 72 72 72 72 72 72 72 
84 84 84 84 84 84 84 84 84 84 84; 
+0

İkinci (makro değişken) ne yapmak isterdiniz? Bu korkunç derecede beceriksiz görünüyor. – Joe

cevap

0
data test; 
    do index= 1 to 84; 
     output; 
    end; 
run; 

data test2; 
array num [7] (24 36 48 60 66 72 84); 
    do i = 1 to dim(num); 
     do j = 1 to 12 ; 
      index = num[i]; 
      output; 
     end; 
    end; 
run;  
proc sql noprint; 
    select index into :Term separated by " " from test2; 
    quit; 
    %put &Term.; 

Veya alternatif bir veri kümesi kullanmadan: İçinde artan varsa

data _null_; 
length term $3000; 
array num [7] (24 36 48 60 66 72 84); 
    do i = 1 to dim(num); 
     do j = 1 to 12 ; 
      term = catx(" ",term,num[i]); 
     end; 
    end; 
call symput('Term',term); 
run; 
%put &Term.; 

bile sadece örneğin bir döngü içinde by kullanabilirsiniz adımlar

data _null_; 
length term $3000; 
    do index= 24 by 12 to 84; 
     do i = 1 to 12 ; 
      term = catx(" ",term,index); 
     end; 
    end; 
call symput('Term',term); 
run; 
%put &Term.; 
İlgili konular