全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5949 4
2017-06-06
data age_grp;
   input pat_id age @@;
   cards;
290156 66 299871 68 280256 64 270456 60 262156 58
263256 55 266456 53 250656 44 251256 43 257456 47
258356 48 244606 42 249456 41 233256 33 237656 37
228356 28 222606 22 219856 21
;
run;

data agebygroup;
set age_grp;
if 20=<age<=34 then group='1';
if 35=<age<=49 then group='2';
if 50=<age<=64 then group='3';
if age>=65 then group='4';
run;

data agebygroup2;
set age_grp;
if 20=<age<=34 then group='1';
else if 35=<age<=49 then group='2';
else if 50=<age<=64 then group='3';
else if age>=65 then group='4';
run;

二维码

扫码加我 拉你入群

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

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

全部回复
2017-6-7 10:51:37
else :排除 上一句/上几句 中 成立的条件
二维码

扫码加我 拉你入群

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

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

2017-6-8 01:03:24
在这个特定例子里问题不大,因为你把两边边界都卡死了。但如楼上说的,用else if做的是互斥选择,从程序开销角度来说执行时判定到符合条件的执行完就直接跳出,显得更经济。而第一种情况每一个if都要进去判定一次,省不了。

再者,万一哪天不小心把边界条件改宽松了,比如第一个不小心只写了半边20<=age,那么程序会打印多少值出来呢,自己可以想想。
二维码

扫码加我 拉你入群

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

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

2017-6-14 07:29:04
foocares 发表于 2017-6-8 01:03
在这个特定例子里问题不大,因为你把两边边界都卡死了。但如楼上说的,用else if做的是互斥选择,从程序开销 ...
谢谢啦
二维码

扫码加我 拉你入群

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

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

2017-6-14 07:29:35
大片阳光因你 发表于 2017-6-7 10:51
else :排除 上一句/上几句 中 成立的条件
三克油,明白了。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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