楼主: zhou.wen
11104 7

[学习分享] sas学习笔记之if和where [推广有奖]

教授

9%

还不是VIP/贵宾

-

TA的文库  其他...

SAS Technology

威望
0
论坛币
31987 个
通用积分
6.2141
学术水平
283 点
热心指数
262 点
信用等级
257 点
经验
55167 点
帖子
399
精华
4
在线时间
1328 小时
注册时间
2010-10-12
最后登录
2018-3-9

初级学术勋章 初级热心勋章 中级学术勋章 中级热心勋章

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
SAS学习笔记目录
上一篇:SAS学习笔记之数据合并Merge
IF 和 Where:
Where比较简单,在之前的[url=SAS学习笔记之Print输出(持续更新) https://bbs.pinggu.org/forum.php? ... 080&from^^uid=2209242]Print[/url]语句中有提到过,这里主要讲IF语句
  1. IF expression THEN DO;
  2. executable statements
  3. END;
  4. ELSE DO;
  5. executable statements
复制代码
看例子:
  1. data flightrev;
  2. set ia.dfwlax;
  3. Total=sum(FirstClass,Economy);
  4. if upcase(Dest)='DFW' then do;
  5. Revenue=sum(1500*FirstClass,900*Economy);
  6. City='Dallas';
  7. end;
  8. else if upcase(Dest)='LAX' then do;
  9. Revenue=sum(2000*FirstClass,1200*Economy);
  10. City='Los Angeles';
  11. end;
  12. run;
复制代码
稍微解读一下这个程序,sum()和upcase()都是函数
Total=sum(FirstClass,Economy);等价于Total=FirstClass+Economy;表示变量FirstClass和Economy之和作为新变量Total;
upcase(Dest)是则让变量Dest的值转换为大写字母


思考一下IF和Where的作用,发现它们非常类似,都起到数据筛选的作用,但是它们并不是等价的,主要体现在作用范围不同
IF和Where.jpg
上面的表很好的展示了Where跟IF各自作用的范围下一篇:
SAS学习笔记之画图初步




二维码

扫码加我 拉你入群

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

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

关键词:SAS学习 Where 学习笔记 HERE whe where SAS

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
zll_zh + 1 + 1 + 1 精彩帖子

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

Practice Is The Best Teacher!
沙发
梦之殇 发表于 2012-8-20 19:15:05 |只看作者 |坛友微信交流群
楼主加油,继续学习……
自从我开始签到,我又长了8厘米,OMG!

使用道具

藤椅
ryuuzt 发表于 2012-8-21 09:37:52 |只看作者 |坛友微信交流群
能不能对最后一个比较where和if的作用范围的表给出具体的例子?
谢谢。

使用道具

板凳
zhou.wen 发表于 2012-8-21 11:43:49 |只看作者 |坛友微信交流群
ryuuzt 发表于 2012-8-21 09:37
能不能对最后一个比较where和if的作用范围的表给出具体的例子?
谢谢。
下面给出一个data中的例子,前面的set步骤里,if跟where可以互相替换(因为这里是单数据集)。

where Date lt '14dec2000'd;
if Total gt 175;
后面的if由于是赋值语句,所以不能用where替换(assignment statement)
if upcase(Dest)='DFW' then do;
Revenue=sum(1500*FirstClass,900*Economy);
City='Dallas';
end;
  1. data over175;
  2. set ia.dfwlax;
  3. where Date lt '14dec2000'd;
  4. length City $ 11;
  5. Total=sum(FirstClass,Economy);
  6. if Total gt 175;
  7. if upcase(Dest)='DFW' then do;
  8. Revenue=sum(1500*FirstClass,900*Economy);
  9. City='Dallas';
  10. end;
  11. else if upcase(Dest)='LAX' then do;
  12. Revenue=sum(2000*FirstClass,1200*Economy);
  13. City='Los Angeles';
  14. end;
  15. run;
复制代码


Practice Is The Best Teacher!

使用道具

报纸
ryuuzt 发表于 2012-8-22 10:53:27 |只看作者 |坛友微信交流群
zhou.wen 发表于 2012-8-21 11:43
下面给出一个data中的例子,前面的set步骤里,if跟where可以互相替换(因为这里是单数据集)。
[/backco ...
谢谢。很用心。
继续跟踪学习。

使用道具

地板
00810112 发表于 2012-8-23 16:02:58 |只看作者 |坛友微信交流群
赞一个

使用道具

7
袖手青衫 发表于 2014-11-28 12:27:09 |只看作者 |坛友微信交流群
总结的很好

使用道具

8
vstalent 发表于 2015-3-30 06:17:44 |只看作者 |坛友微信交流群
樓主真棒,支持繼續

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-19 11:40