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.
Me funcionó perfecto el código y era algo que estaba necesitando con urgencia.
De verdad muchas gracias.
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
Hola, una duda, estoy intentando usar tu macro pero al usarla las bases que me da estan vacias, porque pasa eso?
ES una macro que hice hace 10 años. No sé si habrán cambiado algo en SAS, pero es un código bastante sencillo. ¿Algún error en el log?