2017-07-25 14 views
-1

私は20人の学生に対して5つのテストスコアを持つデータファイルを持っています。各テストのスコアは、合格グレードがそれぞれ68,70,72,74,76です。SASで配列を使用

私はこのデータを.datファイルから読み込みましたが、各生徒が渡したテストの数を計算する必要があります。 if文を使うのはかなり簡単ですが、ここでは配列を利用する必要があります。だから私のコードは次のようになります

data test_scores; 
infile '---------------------------------'; 
input t1 t2 t3 t4 t5; 
array test_scores{5} t1 t2 t3 t4 t5; 
do n=1 to 5; 
    if tests[i] = 

これは私が立ち往生しているところです。インデックスが1でテストスコアが68より大きい場合、アキュムレータ変数tests_passedに追加してからすべての5を実行しますが、それは重複しているように見えます。どんな助けもありがとう!

答えて

1

あなたのスコアのカットオフが均等に配置されているので、あなたができる:

do n=1 to 5; 
    if test_scores[n] >= 66 + 2 * n 

しかし、それは非常に拡張性はありませんので、おそらくより良い方法は、カットオフスコアの配列を持つことです。

array pass_cutoff{5} 68 70 72 74 76; 
do n=1 to 5; 
    if test_scores[n] >= pass_cutoff[n] 

こうすることで、カットオフが変更された場合は、配列の初期化を更新するだけで、すべてが引き続き動作します。

+0

ありがとうございました! 2番目のソリューションは完璧な意味を持っています – Ami

+1

配列の値にコンマを表示することはできません。 – Reeza

+1

@Reezaが修正されました。頭がおかしくなりました.-最近、たくさんのJavaを書いています。 – MyStackRunnethOver