在SAS数据步骤中仅使用一个set语句查找两个中心观察

时间:2015-04-11 13:46:29

标签: sas center

我目前正在参加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;

2 个答案:

答案 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;

openattrn函数更常用于宏代码(通过%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;