我有一个我在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;
答案 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;