使用期末考试成绩

时间:2016-03-04 01:03:03

标签: sas

我有一个我在SAS Studio中导入的xls文件,它包含76个观察结果(每个学生一个),变量作业,' final'' exam1&#39 ;,'考试','考试3'和'行动'。我想写一个SAS程序,用他们" final'的值来更新每个学生的最低考试成绩(考试1,考试2或考试3)。年级。我该如何编码?

我知道如何使用代码更新变量,但我不知道'知道如何找到最低等级,然后更新该变量

这是我的程序到目前为止的样子:

FILENAME FinalG '/home/mrohde0/MyFolder/HWData/HW6/FINAL Grade.xlsx';

/** Import the file.  **/

PROC IMPORT DATAFILE=FinalG
    OUT=WORK.MYFinalG
    DBMS=xlsx
    REPLACE;
RUN;

Data 
    proc print data=MyFinalG;

run;

2 个答案:

答案 0 :(得分:0)

我已经找到了问题的答案。我在下面发布了它。

data MyAdjGr; /* my adjusted grade */
    set work.MyFinalG;
    if exam1 = min(exam1, exam2, exam3) then exam1 = final;
    else if exam2 = min(exam1, exam2, exam3) then exam2 = final;
    else if exam3 = min(exam1, exam2, exam3) then exam3 = final;
run;

答案 1 :(得分:0)

为考试声明一个数组,您可以使用WHICHN函数查找最低分数的索引。这与上面的代码量相同,因此代码长度没有区别。它会更好地扩展,如果你不得不再增加4个考试,你需要再增加4行,而下面的解决方案只需要改变一行,数组维度和变量声明。

data want;
set have; 
array exams(3) exam1 exam2 exam3;
lowest_index=whichn(min(of exams(*)), of exams(*));
exams(lowest_index) = final;
*if you want to conditionally assign the lowest value:;
*if final > exams(lowest_index) then exams(lowest_index)=final;
run;