在 SAS 中使用数组

Using arrays in SAS

我有一个数据文件,其中包含 20 名学生的五项考试成绩。每个测试分数都有自己的及格分数,分别为 68、70、72、74、76。

我从 .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 做,但这似乎是多余的,也是我从哪里开始的。如有任何帮助,我们将不胜感激!

由于你的分界点是均匀分布的,你可以这样做:

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]

这样,如果截止值发生变化,您只需更新数组初始化,一切仍然有效。