首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >根据变量值拆分SAS数据集

根据变量值拆分SAS数据集

作者头像
专业余码农
发布2020-07-16 09:58:39
2.5K0
发布2020-07-16 09:58:39
举报
文章被收录于专栏:老Z的博客老Z的博客
Splitting
Splitting

前几天看到一个群友提的一个问题,根据数据集中的某一个变量的值将一人大数据集拆分为多个小数据集(见上图第15题),实现这一目的的方法有多种,最常见的方法应该是宏循环,下面以根据变量SEX来拆分数据集SASHELP.CLASS为例介绍其他几种方法:

  1. CALL EXECUTE,程序如下:
proc sql;
    create table sex as
        select distinct SEX 
    	from sashelp.class
        ;
quit;

data _null_;
    set sex;
    call execute('data sex_'||cats(SEX)||'(where=(SEX='||quote(cats(SEX))||')); set sashelp.class; run;');
run;
  1. FILENAME,程序如下:
proc sql;
    create table sex as
        select distinct SEX 
    	from sashelp.class
        ;
quit;

filename code temp;
data _null_;
    file code;
    set sex;
    put ' sex_' SEX '(where=(SEX="' SEX '"))' @@;
run;

data %inc code;;
    set sashelp.class;
run;
  1. HASH,程序(SAS9.2+)如下:
proc sort data=sashelp.class out=class;
    by SEX;
run;

data _null_;
    dcl hash h(multidata:'y');
    h.definekey('SEX');
    h.definedone();
    do until(last.SEX);
        set class;
        by SEX;
        h.add();
    end;
    h.output(dataset:cats('sex_', SEX));
run;

上面几种方法中第一种方法程序行数最少,第二种方法行数最多,但是我们可以看到第一、第三种方法有多次SET的操作,所以当要拆分的数据集较大时建议用第二种方法以提高效率。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档