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: ...

22 de enero de 2013 · rvaquerizo

Ayudadme. Importar a SAS texto con comillas

Hoy sois vosotros los que tenéis que ayudar al dinosaurio. Ya no estoy para estas cosas. Tengo un problema. Fichero de texto separado por ; típico csv de toda la vida. Este fichero de texto contiene diversos campos que a mis efectos son de texto. Si abrimos el fichero con una hoja de cálculo tendríamos: Pues bien, a la hora de importar unos datos con esa estructura desde SAS no soy capaz de que Dato2 siga conservando las comillas. Con IMPORT tampoco me funciona. El código sería algo parecido a esto: ...

17 de enero de 2013 · rvaquerizo

Truco SAS. Macro número de días de un año

Macro de SAS que te dice el número de días que tiene un año. %macro dias_anio(anio); "31DEC&anio."d-"01JAN&anio."d+1 %mend; A lo mejor ya la he puesto, no me lo tengáis en cuenta.

7 de junio de 2012 · rvaquerizo

Trucos SAS. Particionar y exportar a texto un dataset

Duda que plantea David. Exporta a csv una tabla SAS en varias partes. Ya habrá tiempo para comentarlo: *TABLA SAS DE EJEMPLO; data total; do i=1 to 10000; importe=ranuni(8)*100; output; end; run; *MACRO QUE RECORRE LA TABLA, PARTE Y EXPORTA CADA PARTE NECESITA EL CONJUNTO DE DATOS Y EL TAMAÑO DE CADA PARTE; %macro parte(ds, tamanio); %do i = 1 %to 10000 %by &tamanio.; data parte; set &ds. (firstobs = &i. obs = %eval(&i. + &tamanio.)); run; PROC EXPORT DATA= WORK.Parte OUTFILE= "C:\\TEMP\\parte&i..csv" DBMS=CSV REPLACE; RUN; proc delete data=parte; quit; %end; %mend; %parte(total, 1000);

5 de junio de 2012 · rvaquerizo

Trucos SAS. Primer y último elemento de un array

Breve entrada sobre el uso de arrays en SAS. Dada una tabla SAS como esta con una variable mes1, mes2, … mesN: Necesitamos identificar el primer y el último elemento no nulo de un array y el número de elementos no nulos de ese array. Veamos el ejemplo: data datos; input id mes1 mes2 mes3 mes4 mes5 mes6; datalines; 1 . . . . . . 2 162.18 88.41 919.62 891.25 837.73 163.14 3 . 790.52 160.03 . 60.31 343.30 4 . . 482.45 755.39 . . 5 265.17 963.53 . . 392.06 . 6 . 214.95 616.17 183.01 778.48 57.42 7 191.52 . 208.50 50.55 705.72 . 8 711.76 . . . 193.20 658.45 9 782.67 172.49 539.42 663.28 4.53 358.51 10 695.12 367.74 . 573.47 366.30 951.98 ; run; Para este proceso creamos un array que recorreremos 2 veces, una hacia delante para identificar el primer elemento y otra a hacia atrás para identificar el último elemento: ...

21 de mayo de 2012 · rvaquerizo

Sentencia del Tribunal de Justicia de la UE sobre el caso WPS y SAS

El caso de WPS y SAS por fin tiene un final. World Programing Software ha vencido (por fin) al todo poderoso SAS Institute Inc. La sentencia establece que: De este modo, procede señalar que no puede haber infracción del derecho de autor sobre el programa de ordenador cuando, como sucede en el caso de autos, el adquirente legítimo de la licencia no ha tenido acceso al código fuente del programa de ordenador correspondiente a esa licencia, sino que se limitó a estudiar, observar y verificar ese programa con el fin de reproducir su funcionalidad en un segundo programa. ...

2 de mayo de 2012 · rvaquerizo

Trucos SAS. Eliminación de espacios en blanco

Truco SAS práctico para aquellos que os estáis iniciando en el uso de las funciones de texto con SAS. Se trata de eliminar aquellos espacios en blanco que no son necesarios en una variable. Quería plantearos las posibles soluciones que se me han ido ocurriendo. Algunas de ellas no son eficientes pero es necesario que dispongáis de todas. En la línea habitual planteo un ejemplo para que lo ejecutéis y así podáis analizar los resultados: ...

10 de enero de 2012 · rvaquerizo

Trucos SAS. Trasponer con SQL para torpes

Trasponer datos con SAS es un tema que genera un gran número de consultas en Google, por lo tanto genera un gran número de visitas a este blog. Ya hay un monográfico al respecto pero hoy quería volver a contar la trasposición de datos con SQL y SAS pero a un nivel más bajo para que sea lo más sencillo posible. En el ejemplo partimos de una tabla con 3 variables, un id_cliente, un campo tipo y un campo precio. Cada tipo tiene un precio y necesitamos que nuestro dataset tenga un registro por id_cliente y 3 precios, uno por cada tipo. El ejemplo en código SAS: ...

21 de noviembre de 2011 · rvaquerizo

Paquete sas7bdat de R. Me pongo con ello

En su día en esta bitácora se habló de la función sas7bdat de R. Ahora han realizado un paquete de R a partir de esa base. Lo tenéis en el blog SAS and R. De momento es experimental en el CRAN. No solo me gustaría divulgar la noticia, en breve espero tener preparado un repaso al tema a ver si podemos «consolidar» este paquete tan interesante para los usuarios de SAS. También haré nuevas versiones de entradas anteriores para ilustrar el funcionamiento. ...

26 de julio de 2011 · rvaquerizo

Trucos SAS. Más usos de INFILE y PIPE directorios en tablas SAS

Puede interesarnos tener directorios y subdirectorios en tablas SAS. Es decir, tabular el resultado de un lm en Unix o poner en una tabla el resultado de un dir de MS DOS / Windows. Ya tengo ejemplos publicados a este respecto: Truco SAS. Uso de FILENAME y PIPE Macros SAS: Asignar permisos en Unix Pero no está mal volver a poner un truco para analizar las posibilidades del INFILE + PIPE. Vamos a hacer un DIR de todo nuestro C:\ y sacar los archivos de mayor tamaño. ...

15 de julio de 2011 · rvaquerizo