全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2925 2
2016-10-25
悬赏 50 个论坛币 已解决
只执行       

                proc sql noprint;

                select n into :loci from pstkitest

                having abs(dif)=min(abs(dif)) ;

                quit;

时候,loci取值比如是811

但执行
                proc sql noprint;
                select n into :loci from pstkitest
                having abs(dif)=min(abs(dif)) and dif<11;
                quit;

实际上并没有同时符合   having abs(dif)=min(abs(dif)) and dif<11;  的观测,  但此时loci仍然是811,并且出现了提示
996           proc sql noprint;
997           select n into :loci from pstkitest
998           having abs(dif)=min(abs(dif)) and dif<11;
NOTE: 查询要求将汇总统计量与原始的数据重新合并。

999           quit;


请问怎样才能将此时的loci取空值或者不取值之类的。
另外,空值是否与常数进行大小比较,如果可以,是大于所有常数还是小于所有常数。如何生成不能够比较的赋值。


最佳答案

prince315 查看完整内容

空值是可以跟数值比较大小的,且空值被认为是最小的数。 你这边的条件,可能这么写有问题吧?是不是把条件改成 proc sql noprint; select n into :loci from pstkitest where dif
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-10-25 15:03:20
空值是可以跟数值比较大小的,且空值被认为是最小的数。
你这边的条件,可能这么写有问题吧?是不是把条件改成
proc sql noprint;
select n into :loci from pstkitest
where dif<11
having abs(dif)=min(abs(dif));
quit;
就可以了?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-10-27 13:38:54
1:空值是可以与数值或者字符比较的,空值算是最小的。
2:当having 子句筛选不出来观测时,就没有选定的行。no rows。
3:如果想让loci去空值,建议使用data步中的if语句,而且,不过在数据集中,你要构建一个新变量来代表最小值(min(abs(dif)) 。在data不中使用call symput函数
4:因为最后使用的Proc sql过程没有选中观测,所以宏变量loci的值仍然是上一次的
绝对字符和数值是不能比较的吧


就这么多了吧
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群