我目前正在参加SAS编程课程,老师已经分配了一个家庭作业问题,其中包括获取excel电子表格并阅读两个中心观察。这并不难,我已经包含了代码。但他要求我只用一个 SET语句来做。我需要一个SET语句来读取数据开始,另一个用于访问POINT =选项,至少是SAS网站在给出示例时所说的内容。所以我不能用不到两个的方法来做到这一点。任何人都可以看到删除一个SET语句的方法吗?
data selection;
set gender nobs = y;
do z = (y/2) to (y/2)+1;
set gender point = z;
output;
end;
drop x;
stop;
run;
答案 0 :(得分:0)
坦率地说,我没有看到第二集声明的危害与你编写它的方式有关,因为它只执行一次,以获得nobs
值。
如果你真的想这样做,我会说一个愚蠢的约束需要一个愚蠢的解决方案:
data selection;
dsid = open("sashelp.class");
y = attrn(dsid,"nobs");
do z = (y/2) to (y/2)+1;
set sashelp.class point = z;
output;
end;
stop;
run;
open
和attrn
函数更常用于宏代码(通过%sysfunc
) - 在数据步骤中需要它们是不寻常的。
P.S。如果您非常热衷,也可以使用零集合语句来完成此操作,但这将涉及过度无偿使用宏代码。
答案 1 :(得分:0)
如果您不必使用point=
选项,则只需遍历整个数据集,只输出所需的记录。
(这会在{user667489示例中使用open()
和attrn()
创建相同的数据集。
data selection2;
set sashelp.class nobs=y;
if floor(y/2) <= _n_ <= floor(y/2)+1 then
output;
run;