带多个条件的SAS WHERE语句
在SAS PROC FREQ中,使用带有多个条件的WHERE语句,我想了解为什么添加条件会导致频率增加 第一种情况:带多个条件的SAS WHERE语句,sas,where,Sas,Where,在SAS PROC FREQ中,使用带有多个条件的WHERE语句,我想了解为什么添加条件会导致频率增加 第一种情况: PROC FREQ; WHERE X=1 AND Y=1; TABLE YEARS; RUN; 特定年份的输出N=100 但是: 同一年的输出大于上一年的N,例如,N=200 在第二个FREQ和WHERE语句中,我认为括号中的条件应该首先计算,在and…OR之前,并且应该选择与第一个WHERE语句相同的N=100。然后,行中剩余的条件,A=2或B=2,应该选择N=100的子集,
PROC FREQ;
WHERE X=1 AND Y=1;
TABLE YEARS;
RUN;
特定年份的输出N=100
但是:
同一年的输出大于上一年的N,例如,N=200
在第二个FREQ和WHERE语句中,我认为括号中的条件应该首先计算,在and…OR之前,并且应该选择与第一个WHERE语句相同的N=100。然后,行中剩余的条件,A=2或B=2,应该选择N=100的子集,A=2或B=2。因此,所选N应小于或等于100,但不大于100
这就是我想要的-(X=1和Y=1)的子集
也有A=2或B=2,但这似乎不是我得到的。建议
这是我想要的正确说法吗
式中(X=1,Y=1,A=2)或(X=1,Y=1,B=2)代码>
谢谢。在逻辑表达式中添加未嵌套的或
将始终导致结果集保持不变或变大
您需要使用括号来更改求值顺序。如果没有括号,将首先计算所有和
表达式,然后计算或
表达式
从文件中
处理复合表达式
当SAS遇到复合物时
表达式(多个条件),软件遵循规则
确定计算每个表达式的顺序。何时何地
组合表达式后,SAS将以特定的方式处理条件
订单:
首先处理NOT表达式
然后处理和连接的表达式
最后,处理由或连接的表达式李>
使用括号控制评估顺序
即使SAS按特定顺序计算逻辑运算符,您也可以
通过在括号中嵌套表达式来控制计算顺序。
也就是说,括号中的表达式在一个表达式之前处理
没有附上。最里面的一组括号中的表达式
首先处理,然后是下一个,向外移动,直到
所有括号都已处理
例如,假设您想要一个
同时具有SAS/GRAPH和SAS/STAT的所有加拿大站点的列表
软件,因此发出以下表达式:
where product='GRAPH' or product='STAT' and country='Canada';
然而,结果包括所有许可SAS/GRAPH软件的站点以及加拿大
许可SAS/STAT软件的站点。为了得到正确的结果,
您可以使用括号,这会导致SAS评估比较
首先在括号内,提供包含以下内容的站点列表:
产品许可证,然后将结果用于剩余条件:
where (product='GRAPH' or product='STAT') and country='Canada';
那么你的
WHERE (X=1 AND Y=1) AND A=2 OR B=2;
与
WHERE (X=1 AND Y=1 AND A=2) OR B=2;
这就是我想在问题中描述的
WHERE (X=1 AND Y=1) AND (A=2 OR B=2);
哪个是相同的
无论您如何陈述表达式,添加或
始终有可能增加符合表达式的项目数。未嵌套的或
将有可能选择比嵌套的(或插入括号的)或
更多的项。向逻辑表达式添加未嵌套的或
将始终导致结果集保持不变或变大
您需要使用括号来更改求值顺序。如果没有括号,将首先计算所有和
表达式,然后计算或
表达式
从文件中
处理复合表达式
当SAS遇到复合物时
表达式(多个条件),软件遵循规则
确定计算每个表达式的顺序。何时何地
组合表达式后,SAS将以特定的方式处理条件
订单:
首先处理NOT表达式
然后处理和连接的表达式
最后,处理由或连接的表达式李>
使用括号控制评估顺序
即使SAS按特定顺序计算逻辑运算符,您也可以
通过在括号中嵌套表达式来控制计算顺序。
也就是说,括号中的表达式在一个表达式之前处理
没有附上。最里面的一组括号中的表达式
首先处理,然后是下一个,向外移动,直到
所有括号都已处理
例如,假设您想要一个
同时具有SAS/GRAPH和SAS/STAT的所有加拿大站点的列表
软件,因此发出以下表达式:
where product='GRAPH' or product='STAT' and country='Canada';
然而,结果包括所有许可SAS/GRAPH软件的站点以及加拿大
许可SAS/STAT软件的站点。为了得到正确的结果,
您可以使用括号,这会导致SAS评估比较
首先在括号内,提供包含以下内容的站点列表:
产品许可证,然后将结果用于剩余条件:
where (product='GRAPH' or product='STAT') and country='Canada';
那么你的
WHERE (X=1 AND Y=1) AND A=2 OR B=2;
与
WHERE (X=1 AND Y=1 AND A=2) OR B=2;
这就是我想在问题中描述的
WHERE (X=1 AND Y=1) AND (A=2 OR B=2);
哪个是相同的
无论您如何陈述表达式,添加或
始终有可能增加符合表达式的项目数。未嵌套的或
可以选择比嵌套的(或插入括号的)或
更多的项目