Entradas

Mostrando entradas de febrero, 2017

Corrección automática de nulos en tablas SAS

Imagen
En la misma línea que este post anterior: detectar nulos en tablas SAS, añadimos un nuevo programa de ejemplo de SAS para automatizar la detección de nulos en una tabla SAS.


Se trata de una macro que revisa todos los campos de una tabla identificando nulos. Los nulos de variables de tipo numérico los sustituye por 0 y los de variables alfanuméricas por un carácter determinado, en este caso '-'. La macro valida por un lado las variables numéricas y por otra las alfanuméricas apoyándose en un array. Recibe como argumento el nombre de la tabla a validar (tabin) y genera una tabla nueva (tabout) que podría ser la misma. Se podría modificar para que los valores de sustitución para nulos de numéricos y alfanuméricos se recibieran como argumento. Esperemos os sea de utilidad.

-------------------------------------------------------------------------------------------------------------------------

This is a SAS macro that check all variables in a SAS dataset detecting null values. Null va…

Analisis RFM con SAS (video)

Imagen
Adjuntamos video explicando como realizar análisis RFM (Recency, Frequency y Money) con SAS Enterprise Guide. Es un video muy práctico en el que en 14 min se explica de un modo sencillo como parametrizar y ejecutar esta tarea



Formación SAS

Macro para cambio automático permisos tablas SAS

Imagen
Con frecuencia nos encontramos problemas de acceso a tablas SAS que se deben a los permisos con los que se crea la tabla de forma automática. Es posible que una tabla SAS generada por un usuario no pueda ser accedida por otros.

Habitualmente en un grupo de trabajo hay tablas maestras que deben ser accedidas por todo el equipo, para solucionar este problema de forma  rápida, añadimos una macro de SAS que cambia los permisos de todas las tablas de una librería.



Hay que saber la ruta física de la librería y los permisos actuales. Esto lo obtenemos con un proc contents:

proc contents data=tabsas._ALL_;
run;



Los permisos se dan utilizando el comando X y siguiendo el código rwx:Permisos rwx

%macro permisos_tablas(libreria);

PROC SQL;
create table tablas as (SELECT memname
FROM dictionary.tables WHERE libname= upcase("&libreria") );
quit;

%let dsid = %sysfunc (open(tablas));  
%let nobs = %sysfunc (attrn(&dsid, NOBS));
%if &nobs > 0 %then %do;
%do i = 1 %to &nobs;  
%let rc =…

Examen ejemplo certificación SAS "Base Programmer" (I)

Imagen
Añadimos un ejemplo de examen de la certificación: 'SAS Certified Base Programmer for SAS 9'
Información general del examen
Examen de ejemplo:

Question 1
The following program is submitted.
data WORK.TEST;
input Name $ Age;
datalines;
John +35
;
run;
Which values are stored in the output data set?
Name Age
---------------------
John 35 Name Age
---------------------
John (missing value)Name Age
---------------------
(missing value) (missing value)The DATA step fails execution due to data errors.correct_answer = "A" Question 2 Given the SAS data set WORK.ONE:
Id Char1
--- -----
182 M
190 N
250 O
720 P
and the SAS data set WORK.TWO:
Id Char2
--- -----
182 Q
623 R
720 S
The following program is submitted:
data WORK.BOTH;
merge WORK.ONE WORK.TWO;
by Id;
run;
What is the first observation in the SAS data set WORK.BOTH?
Id Char1 Char2
--- ----- -----
182 M
Id Char1 Char2
--- ----- -----
182 Q
Id Char1 Char2
--- …