2016-04-06 10 views
0

以下のデータセットを生成します。 1-84を書き留める代わりに、これを行う方が良いでしょうか?ありがとう。SASは、シーケンス番号をエレガントな方法で生成(繰り返し)します

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; 

また、以下のようなマクロ変数があります。それを書く良い方法は?

データセットを使用せずに
%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

2番目(マクロ変数)は何でもしますか?それはひどく扱いにくいようです。 – Joe

答えて

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

または代わり:

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

あなたはただ、例えばループ内でbyを使用することができさえ段階的に増加している場合

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.; 
関連する問題