El otro día una lectora del blog me preguntaba como obtener el mínimo de una matriz de datos de 100×1000 con SAS. El ejercicio es muy práctico para ayudar a que se entienda mejor como “piensa” SAS. Probablemente esta lectora estaba pensando en complicados bucles que recorren, que almacenan, que arrastran,… con SAS las cosas no son así. El paso data es un bucle en si mismo y SAS no tiene pereza en crear tablas intermedias. Así que la mejor solución para encontrar ese mínimo sería:
data matriz;
do j=1 to 1000;
array varib(100);
do i=1 to 100;
varib(i) = ranuni(56)*1000;
end;output;
end;
drop i j;
run;
proc summary data=matriz;
var varib:;
output out=minimos min=;
quit;
data _null_;
set minimos;
minimo_total = min(of varib:);
put minimo_total=;
run;
Se crea una matriz de datos aleatorios con un paso data de 100×1000 las variables se llaman varib ya que se generan con ese array. La mejor solución es hacer una tabla SAS con todos los mínimos por variable y meterlo en un conjunto de datos SAS. Por último el mínimo de los mínimos será el mínimo total o el más mínimo como diría alguno. Si programáis con SAS pensad en SAS. Saludos.
Buenas tardes,
Os dejo un link en el que se realiza una comparación entre SAS y R, con objeto de recibir comentarios y contribuciones.
http://blog.mbitschool.com/2015/05/data-science-tools-sas-vs-r.html
Un saludo,