Sas 用期末考试分数更新最低分数变量
我在SAS Studio中导入了一个xls文件,它包含76个观察值(每个学生一个),其中包含变量“final”、“exam1”、“exam2”、“exam3”和“act”。我想写一个SAS程序,用每个学生的“最终”分数值更新每个学生的最低考试分数(exam1、exam2或exam3)。我如何编写这个程序 我知道如何用代码更新变量,但我不知道如何找到最低等级,然后更新该变量 到目前为止,我的程序是这样的:Sas 用期末考试分数更新最低分数变量,sas,Sas,我在SAS Studio中导入了一个xls文件,它包含76个观察值(每个学生一个),其中包含变量“final”、“exam1”、“exam2”、“exam3”和“act”。我想写一个SAS程序,用每个学生的“最终”分数值更新每个学生的最低考试分数(exam1、exam2或exam3)。我如何编写这个程序 我知道如何用代码更新变量,但我不知道如何找到最低等级,然后更新该变量 到目前为止,我的程序是这样的: FILENAME FinalG '/home/mrohde0/MyFolder/HWData
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;
我已经找到了问题的答案。我把它贴在下面
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;
为考试声明一个数组,您可以使用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;
所有的考试分数都比期末分数高会发生什么?