2017-07-25 68 views
-1

我有一個數據文件,其中有20個學生的五個測試分數。每個測試分數分別有自己的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

謝謝!你的第二個解決方案非常有意義 – Ami

+1

你不能像你所顯示的那樣在你的數組中使用逗號。 – Reeza

+1

@Reeza修好了,謝謝你的支持 - 最近我一直在寫很多Java – MyStackRunnethOver