全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2924 7
2009-04-10

求教:oracle的decode函数功能如何在SAS中实现?

比如一个变量score,取值0-100,现在想生成一个新变量sev,4个等级0-3

if         score=0    then sev=0;

if  1<=score=30   then sev=1;

if 31<=score=69  then sev=2;

if score>=70        then sev=3;

现在我想用一条语句解决这个问题,希望高手赐教!

二维码

扫码加我 拉你入群

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

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

全部回复
2009-4-10 09:42:00
You can use "Proc Format" to handle this. It is very easy.
二维码

扫码加我 拉你入群

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

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

2009-4-10 09:45:00

在data步中该如何实现呢?

二维码

扫码加我 拉你入群

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

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

2009-4-10 10:04:00
Here is the example for you. Remember, once you have your format built, you can use it in any data step and proc step. Let me know if you need further hep.


Proc Format;
    Value salerange
         low - 0=0
          1-3000 =1
          3001-6999=2
          6999-high =3;

Data Shoes (keep=Region Sales Band);
    set sashelp.shoes;
    Format band 1.;
    band = input(Put(Sales, salerange.), 1.);
Run;
二维码

扫码加我 拉你入群

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

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

2009-4-10 10:07:00

下面首先生成一个数据集trial,包括我的关心的score和sev;

然后我用sql中的case expression生成一个新变量sev2,跟sev一样;

但是现在我想在data步中达到这个目的

DATA  TRIAL;
INPUT TRT $ CENTER PAT SEX $ AGE SCORE @@;
RESP = (SCORE GT 0);
/* RESP=0 (symptoms are absent), =1 (symptoms are present) */
IF (SCORE = 0) THEN SEV = 0; /* 0 No Symptoms*/
IF ( 1 LE SCORE LE 30) THEN SEV = 1; /* 1 mild Symptoms*/
IF (31 LE SCORE LE 69) THEN SEV = 2; /* 2 moderate Symptoms*/
IF (SCORE GE 70) THEN SEV = 3; /* 3 severe Symptoms*/
DATALINES;
A 1 101 M 55 5  A 1 104 F 27 0  A 1 106 M 31 35
A 1 107 F 44 21 A 1 109 M 47 15 A 1 111 F 69 70
A 1 112 F 31 10 A 1 114 F 50 0  A 1 116 M 32 20
B 1 105 M 45 20 B 1 108 F 44 65 B 1 110 M 32 25
B 1 113 M 61 75 B 1 115 M 45 83 B 1 117 F 21 0
B 1 120 F 19 55 B 1 122 F 38 0  B 1 125 M 37 72
;
run;

proc sql outobs=12;
   create table a1 as
   select score, sev,
          case
             when score eq 0 then 0
             when 1 le score le 30 then 1
             when 31 le score le 69 then 2
             else 3
          end as sev2
      from trial;
quit;
    

二维码

扫码加我 拉你入群

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

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

2009-4-10 10:21:00
thank u,
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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