我正在尝试编写一个while循环来计算有多少学生符合特定条件,即他们年龄在10-15岁之间,并且他们的得分高于50。在我的数据集中,我有学生的得分及其出生日期(年月日)。
这就是我尝试设置的方式。我已经读到,只要我知道生日,函数INTICK()
就应该能够计算出年龄:
data qualified;
set students;
DO i=0 UNTIL (10=<INTICK('Year', dob, today())=<15 & Ejection_fraction>50) i++;
proc print data=qualified
我没有打印计数。
答案 0 :(得分:2)
SAS自动为您遍历记录,因此您无需编写自己的循环。该循环可以让您执行其他操作,例如遍历变量,但是如果它是记录,那么您在追求什么呢? SAS为您做到这一点。
通常,您只需用proc freq
或类似的数字来计算它们。
proc freq data=students;
where 10<=INTCK('Year', dob, today())<=15 and Ejection_fraction>50;
run;
或者您可以在数据步骤中创建数据集。
data qualified;
set students;
where 10=<INTCK('Year', dob, today())=<15 & Ejection_fraction>50;
run;
在SAS中很少遍历记录(行)。