加载中…
个人资料
谷子歌的2018
谷子歌的2018
  • 博客等级:
  • 博客积分:0
  • 博客访问:121,612
  • 关注人气:199
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

变量分组的几种常用方法

(2012-05-24 14:06:59)
标签:

grouping

variable

变量分组

if-else

case-when

分类: Data_Coding

给变量分组,常用的方法有:

1、if-else then ;2、select-when ; 3.proc format.

下面以sashelp.class 为例,对不同age的同学分组。

 

data class;

  set sashelp.class;

     if age<12 thenagegroup="A";

else if age<14then agegroup="B";

else agegroup="C";

run;

 

 

data class;

  set sashelp.class;

  select;

      when(age<12) agegroup="A";

      when(age<14) agegroup="B";  

      other agegroup="C";

  end;

run;

 

 

proc sql ;

  create table class as

  select  *,case when(age<12 then"A"

                 when(age<14) then "B"  

                 else "C"

  end asagegroup

  from sashelp.class;

quit;

  

上面的这两个用法,不知为啥,容易弄混。

如果加上另一种在 select 或case后面跟变量名的用法,就更易弄混了。

另:when()里的条件同IF-ELSE 里的一样,其实是嵌套的。(感谢京剧提醒)

proc format;

   value agefmt low-<12="A"

                12-<14="B"

                14-high="C"

                ;

run;

 

data class;

   set sashelp.class;

agegroup=put(age,agefmt.);

run;


不过,我的疑问是:若果从效率上讲,哪种更高效?

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有