lunes, 28 de julio de 2014

Trabajando con el diccionario/metadata de SAS

En un post anterior vimos la utilidad de las tablas del diccionario de SAS. A continuación incluímos una sencilla macro que puede ser de utilidad para hacer búsquedas en la metadata.



A menudo, nos encontramos con el problema de conocer qué tablas contienen determinado campo. La siguiente macro resuelve este problema de forma rápida, por si no disponemos en nuestra interfaz de desarrollo de una utilidad equivalente.

%macro tabla_columnas(tabla_resultado, lib_busqueda, columna_busqueda);
 /*
 tabla_resultado: tabla en la que guarda la salida de la búsqueda
 lib_busqueda: librería sobre la que realiza la búsqueda
 columna_busqueda: columna que estamos buscando
 */

 proc sql;

 create table &tabla_resultado as
 (SELECT distinct libname as libreria, memname as tabla
 FROM dictionary.columns WHERE upcase(libname)= upcase("&lib_busqueda")
 AND memtype = 'DATA' and upcase(name)=upcase("&columna_busqueda") );
 quit;


%mend tabla_columnas;


%let lib = work;
proc print data=res;


%let col = cod_periodo;
%tabla_columnas(res,work,cod_periodo);


proc print;
title 'Tablas de la librería: ' &lib. ' que tienen la columna: ' &col. ;
run;


jueves, 24 de julio de 2014

Mapas en R

Existen numerosas librerías que permiten realizar de forma ágil mapas con R.
Mencionamos algunas de las más conocidas:maps, mapproj, mapdata, maptools, ggmap y rworldmap.
En este post vamos a realizar un sencillo ejemplo con la librería rworldmap.

Aprovechando la cercanía del último Mundial de fútbol, creamos un mapa en el que mostramos sobre un mapa del Mundo, aquellos países que han ganado un Mundial y el número de ellos.



library(rworldmap)

paises <- c("ESP", "Germany", "FRA", "ITA", "BRA",
            "ARG", "URY", "GBR")

mundiales <- c(1,4,1,4,5,2,2,1)

#Creamos la tabla de datos
paises_mund <- data.frame(paises, mundiales)
names(paises_mund) <- c("pais", "mundiales")

# Enlazamos los datos con el mapa po país, creando el mapa: map1
map1 <- joinCountryData2Map(paises_mund,
                          joinCode="NAME",                        
                          nameJoinColumn="pais",     #enlazamos por columna=pais                  
                          suggestForFailedCodes = T)

# pintamos el mapa
mapCountryData(map1,
               nameColumnToPlot="mundiales",
               catMethod='categorical',
               mapTitle="Número de mundiales de fútbol ganados por País",
               colourPalette=c('yellow','green','blue', 'darkblue'),
               oceanCol="lightblue", missingCountryCol="white")




miércoles, 16 de julio de 2014

Formación a medida en R y SAS

Un grupo de profesionales especializados en Business Intelligence estamos preparando cursos de formación a medida a impartir en Madrid  para usuarios que quieran iniciarse en análisis de información con las herramientas R y SAS.




El curso está adaptado a la gran variedad de perfiles que pueden estar interesados en conocer R y SAS para su actividad profesional: informáticos, matemáticos, estadísticos, sociólogos, economistas, su empleo en investigación: biología, química, medio ambiente, etc..

Igualmente disponemos de un curso de adaptación para usuarios que conozcan otras herramientas similares como pueden ser SPSS ayudándoles a realizar la transición.

El curso de R se basa en la solución R studio y el de SAS en el módulo BASE de la SAS University Edition , versión gratuita recientemente distribuida por SAS

El objetivo es que los cursos sean muy prácticos, muy orientados y muy económicos.

Los interesados pueden escribir para recibir más info a:  cursos_a_medida_r@yahoo.es
o bien dejar un comentario en el post con datos de contacto.


jueves, 3 de julio de 2014

Ejemplos de componentes para tratamiento de datos en SAS, SPSS y R. Equivalencias entre herramientas (III)

Incluímos el último post de la serie, en la que estamos mostrando componentes de manipulación de datos codificados en SAS, SPSS y R.


Ejemplo 13. Tratamiento de fechas:

SAS:

data fechas;
infile cards ;
input fecha_inicio : MMDDYY10. fecha_fin : MMDDYY10.;
dias=fecha_fin-fecha_inicio;
cards;
3/01/2014 4/06/2014
3/02/2014 4/06/2014
3/06/2014 4/06/2014
;
run;

SPSS:

DATA LIST LIST
/fecha_inicio (ADATE12) fecha_fin (ADATE12)
BEGIN DATA
3/01/2014 4/06/2014
3/02/2014 4/06/2014
3/06/2014 4/06/2014
END DATA.
COMPUTE dias = CTIME.DAYS(fecha_fin – fecha_inicio).
EXECUTE.
SAVE OUTFILE = 'C:\temp\fechas.sav'.

R:

fecha_ini <- c(as.Date('03/01/2014',format='%d/%m/%Y'),as.Date('03/02/2014',format='%d/%m/%Y'),as.Date('03/06/2014',format='%d/%m/%Y'))
fecha_fin <- c(as.Date('04/06/2014',format='%d/%m/%Y'),as.Date('04/06/2014',format='%d/%m/%Y'),as.Date('04/06/2014',format='%d/%m/%Y'))
tabla_fecha <- data.frame(fecha_ini, fecha_fin)
tabla_fecha$dias = tabla_fecha$fecha_fin - tabla_fecha$fecha_ini



Ejemplo 14. Filtrado de datos (where):

SAS:

data tabla_filtro;
set tabla1;
where arpu > 10;
run;

SPSS:

GET FILE='C:\temp\tabla1.sav'.
SELECT IF(arpu > 10).
SAVE OUTFILE='C:\temp\tabla_filtro.sav'.
EXECUTE.

R:

tabla_filtro <-subset(tabla1, arpu > 10)


Ejemplo 15. Selección de variables (keep):

SAS:

data tabla_keep (keep = cod_cliente arpu);
set tabla1;
run;

SPSS:

GET FILE='C:\temp\tabla1.sav'.
SAVE OUTFILE='c:\temp\tabla_filtro.sav' /KEEP=cod_cliente,arpu.
EXECUTE.

R:

tabla_keep <- tabla1[c("cod_cliente", “arpu”)]

Ejemplo 16. Ordenar tabla (sort):

SAS:

proc sort data=tabla1 out=tabla_ord;
by cod_cliente;
run;
     

SPSS:

GET FILE='C:\temp\tabla1.sav'.
SORT CASES BY ID_CLIENTE.
SAVE OUTFILE='c:\temp\tabla_ord.sav'.
EXECUTE.

R:

tabla_ord  <-  tabla1[order(tabla1$cod_cliente, ]

Ejemplo 17.  Estructuras condicionales (if):

SAS:

data tabla1;
set tabla1;
if arpu <= 10 then arpu_g = 1; else arpu_g = 2;
run;     
    
SPSS:

GET FILE=("c:\temp\tabla1.sav")
COMPUTE arpu_g=2.
IF (arpu <= 10 ) arpu_g=1.
SAVE OUTFILE='c:\temp\tabla1.sav'.
EXECUTE.

R:

tabla_sal$arpu_g <- ifelse( arpu >= 10, 1,2)

Ejemplo 18.  Exportar a fichero plano:

SAS:

data_null_;                                                           
set tabla1;                                                                                                                         
file 'C:\temp\salida.txt' ;
informat cod_cliente 8. arpu 8.;                                                                                                 
put cod_cliente arpu;                                                                                                                   
run;  

SPSS:

SAVE TRANSLATE
OUTFILE='C:\temp\salida.txt'
/TYPE=TAB
/MAP
/REPLACE
/FIELDNAMES
/CELLS=VALUES.
     
R:

write.table(tabla1, file = "C:/temp/salida.txt")

Ejemplo 19.  Exportar a csv:

SAS:

proc export data=tabla1
outfile="C:\temp\salida.csv"
dbms= csv replaces;
putnames=yes;
run;
      
SPSS:

SAVE TRANSLATE
OUTFILE='C:\temp\salida.csv'
/TYPE=CSV
/MAP
/REPLACE
/FIELDNAMES
/CELLS=VALUES.

R:

write.csv(tabla1, file=" C:/temp/salida.csv";)

Formación SAS