Truco SAS. Categorizar variables continuas
Si necesitamos crear grupos a partir de una variable continua podemos emplear una metodología muy sencilla para crear muestras proporcionales o muestras de un tamaño predeterminado a partir de un conjunto de datos SAS. El método de cálculo es bien sencillo. Si deseamos crear N grupos dividimos la observación entre el total y multiplicamos por los N grupos redondeando al entero más alto. Si deseamos grupos de tamaño M dividimos la observación entre M redondeando al entero más alto. En código SAS:
*DATASET ALEATORIO;
data uno;
do i=1 to 2000;
importe=ranuni(0)*1000;
if rand("uniform")>.34 then output;
end;
run;
*MACRO PARA IDENTIFICAR EL NUMERO DE OBSERVACIONES DE UN DS;
%macro numobs(ds,mv);
%global &mv.
data _null_;
datossid=open("&ds.");
no=attrn(datossid,'nobs');
call symput ("&mv.",compress(no));
datossid=close(datossid);
run;
%mend;
%numobs(uno,obs_de_uno);
*ESPECIFICAMOS EL NÚMERO Y EL TAMAÑO DE LOS GRUPOS;
%let numero_de_grupos=4;
%let tamanio_de_grupos=100;
*ORDENAMOS POR LA VARIABLE QUE DESEAMOS CATEGORIZAR;
proc sort data=uno; by importe; run;
*EN UN MISMO DATA CREAMOS LOS GRUPOS;
data uno;
set uno;
*CREAMOS N GRUPOS;
rango1=ceil((_n_/&obs_de_uno.)*№_de_grupos.);
*CREAMOS GRUPOS DE TAMAÑO M;
rango2=ceil(_n_/&tamanio_de_grupos.);
run;
proc freq data=uno; tables rango:; quit;
Muy sencillo y más páctico. En el futuro crearé un proceso que divida las variables continuas en función de una variable dependiente.
Para dudas o sugerencias rvaquerizo@analisisydecision.es