Split large SAS dataset into smaller datasets

前端 未结 6 480
长情又很酷
长情又很酷 2021-01-13 01:10

I need some assistance with splitting a large SAS dataset into smaller datasets.

Each month I\'ll have a dataset containing a few million records. This number will

6条回答
  •  清酒与你
    2021-01-13 02:02

    The first result on Google is from the SAS User Group International (SUGI) These folks are your friends.

    The article is here: http://www2.sas.com/proceedings/sugi27/p083-27.pdf

    The code is:

    %macro split(ndsn=2); 
    data %do i = 1 %to &ndsn.; dsn&i. %end; ; 
     retain x; 
     set orig nobs=nobs; 
     if _n_ eq 1 
     then do; 
     if mod(nobs,&ndsn.) eq 0 
     then x=int(nobs/&ndsn.); 
     else x=int(nobs/&ndsn.)+1; 
     end; 
     if _n_ le x then output dsn1; 
     %do i = 2 %to &ndsn.; 
     else if _n_ le (&i.*x) 
     then output dsn&i.; 
     %end; 
     run; 
    %mend split; 
    
    %split(ndsn=10);
    

    All you need to do is replace the 10 digit in "%split(ndsn=10);" with the number you require. In Line 4, "set orig nobs=nobs;", simply replace orig with your dataset name.

    Hey presto!

提交回复
热议问题