Macros SAS. Macro split para partir un conjunto de datos

Debido a problemas con un servidor hace años descubrí la macro Split. Básicamente lo que hace es partir un conjunto de datos SAS en múltiples conjuntos de datos SAS con el mismo número de observaciones, además lo hace en un solo paso data. La forma de particionar el conjunto de datos es muy simple, si alguien tiene dudas con el código que lo comente y lo analizamos mejor. La macro (mejorada) es:

 %macro split(in=, out=, ndsn=2);
data %do i = 1 %to &ndsn.; &out.&i. %end; ;
retain x;
set &in. 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 &out.1;
%do i = 2 %to &ndsn.;
else if _n_ le (&i.*x)
then output &out.&i.;
%end;
run;
%mend split;

Un bucle que en función de un contador mete las observaciones donde correspondan, en mi opinión no es un código muy complejo. Como siempre un ejemplo de uso:

 data uno;
do i=1 to 2000000;
output;
end;
run;

%split(in=uno, out=partido, ndsn=4);

Espero que os sea de utilidad, un saludo.

2 comentarios en “Macros SAS. Macro split para partir un conjunto de datos

  1. Buenos días,
    tengo un fichero muy grande y una de las variables (entidad) es alfanumerica y tengo que segmentar el fichero por dicha variable, esta variable puede tener 10, 20 o 30 tipos de entidades, vamos que es variable, y tengo que exportar a tantos excel como tipos de variable los datos segmentados por esa variable.
    Ejemplo:
    Entidad Import
    00012 15
    00012 25
    00013 20
    …… …..
    Excel_00012 con los datos que corresponden a esa entidad
    Excel_00013

    Gracias
    Ana

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

[bws_google_captcha]