2017-02-08 10 views
1

SASデータセットに固定フィールドがあります。コストと呼ぼう。 20の異なる列を作成したいと思います。コスト - 5、コスト - 10、コスト - 15などですが、私はいくつかのフィールドでこれを行う必要があるため、これをコード化したくありません。SASはループを作成して列を作成します

私はSASのdoループでこれをどのように行うことができますか?またはこれを行う簡単な方法がある場合、私は知りたいです。ありがとう!

答えて

2

ここでの一般的なアプローチは、複数のものに対してこれを行う場合は、配列とおそらくそれらの配列を使用することです。

data class; 
    set sashelp.class; 
    array ages[5];  *your array, holding your 5 new columns; 
    do _i = 1 to 5;  *loop over the array; 
    ages[_i] = age-_i; *or -(5*_i) or whatever you are doing; 
    end; 
run; 

その後、あなたは多くの変数のために、これらの4本のラインを取るマクロに入れ、変更される可能性があります何のためのパラメータを作成し、datastepからあなたが必要しかし、何度もそれを呼び出すことを行いたい場合。ループはマクロ内部にあり、マクロループではなくデータステップループです。

変数を明示的にarray文に指定することもできますし、SASがデフォルトで行うこともできます。また、命名された変数をインテリジェントに命名したい場合は、マクロを作成して名前付き変数を作成することもできます。

+0

ありがとうございます!私は今働いている。私は本当に感謝しています –

+0

実際には、ジョー - 私は年齢を取るようにしようとしていると、それを5%削減し、10%などを減らすなど...今はそれを動作させることはできません。私はSASに馬鹿です。何かご意見は?バグ申し訳ありません。 –

+0

年齢[_i] =年齢*(.05 * _i);やそれに類するもの? – Joe

関連する問題