2016-04-06 6 views
0

Ich möchte den Datensatz unten generieren. Anstatt 1-84 zu schreiben, gibt es ein besseres, dies zu tun? Vielen Dank.SAS, erzeugen (wiederholen) Sequenznummer, elegante Art

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; 

Auch ich habe eine Makrovariable wie die unten. Eine bessere Möglichkeit, es zu schreiben?

%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

Was auch immer möchten Sie die zweite (Makrovariable) für tun? Das erscheint schrecklich unhandlich. – Joe

Antwort

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.; 

Oder alternativ ohne einen Datensatz mit:

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.; 

Wenn Sie selbst sind Inkrementieren in Schritte, die Sie gerade by in einer Schleife verwenden können, z

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.; 
Verwandte Themen