全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3145 9
2012-05-24

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

1、if-else then ;

2、select-when ;

3.proc format.

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


注意 select when 的方法,很容易弄混。


http://blog.sina.com.cn/s/blog_41889b9001015htv.html


/***1. if -else then****/

data class;

  set sashelp.class;

     if age<12 then agegroup="A";

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

else agegroup="C";

run;


/***2. select when***/

data class;

  set sashelp.class;

  select;

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

      when(age<14) agegroup="B"; /*据jingju 的提醒,不必写成12〈=age<14)*/

     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;



/***3. proc fomat ***/

proc format;

   value agefmt low-<12="A"

                12-<14="B"

                14-hight="C"

                ;

run;

data class;

   set sashelp.class;

agegroup=put(age,agefmt.);

run;

二维码

扫码加我 拉你入群

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

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

全部回复
2012-5-28 09:54:55
从效率上讲,哪种更高效?
二维码

扫码加我 拉你入群

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

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

2012-6-1 09:28:44
webgu 发表于 2012-5-28 09:54
从效率上讲,哪种更高效?
第三种最快。
呵呵,不是我判断的,是我都跑了一遍。
谢谢。
二维码

扫码加我 拉你入群

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

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

2012-6-1 14:14:36
一直对sql不是很了解,有空能仔细讲讲么?
二维码

扫码加我 拉你入群

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

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

2012-6-1 15:58:11
litaoting 发表于 2012-6-1 14:14
一直对sql不是很了解,有空能仔细讲讲么?
呵呵,这个话题有些大,可以说个具体某方面的,我整理整理。
二维码

扫码加我 拉你入群

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

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

2012-6-1 16:22:46
Good Summary!
另外,同样的操作,一般情况下DATA步效率要比SQL步更高;该例中Proc Format效率最高是很显然的,无论是Select When还是 If then都需要在读取每一条观测后做条件判断,而Proc Format省去了条件判断的步骤,因为对每一值都事先做好了Label。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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