viernes, 12 de diciembre de 2014

Curso especialización Business Intelligence (SAS, PowerCenter y Oracle)

Adjunto información de un interesante curso de Business Intelligence a impartir en Enero de 2015 en el que se adquiere formación teórica en sistemas datawarehouse y Business Intelligence, así como práctica en plataformas de gran demanda: Oracle, PowerCenter y SAS.


martes, 2 de diciembre de 2014

Migración de SAS a R

Poco a poco y sin hacer ruido R empieza a entrar en el panorama empresarial español y empieza a haber proyectos de migración de SAS a R. No voy a entrar a valorar si una herramienta es mejor que otra, simplemente comentar que la realidad actual del departamento de análisis de las empresas españolas es SAS, pero los expertos en data science se decantan por R. Tampoco olvidar que SAS está haciendo un esfuerzo importante de adaptación a estos cambios que hay que valorar.



Sea como fuere, la necesidad de encontrar equivalencias entre código SAS y código R es cada vez más necesaria. Así que incluyo los siguientes links que pueden ser de ayuda:

Equivalencias SAS ,R y SPSS (I)

Equivalencias SAS, R y SPSS (II)

Equivalencias SAS, R y SPSS (III)

Equivalencias SAS, R y SPSS (IV)

Espero sea de ayuda y agradecería comentarios y nuevos ejemplos y equivalencias que el visitante quiera aportar para mejorar este compendio.

Para recibir formación de SAS a medida, formación de R a medida o ayuda para los migrar procesos entre ambas herramientas, escribir a: cursos_a_medida_r@yahoo.es

miércoles, 22 de octubre de 2014

Jornadas de R

Cada año despiertan más interés y son de mayor calidad las jornadas de R organizadas por la comunidad R - Hispano
Hay ponencias muy interesantes en el programa y cabe la posibilidad de asistir 'a distancia'.

Este año en gran lugar: Santiago de Compostela.



Jornadas R

jueves, 16 de octubre de 2014

SAS Forum 2014

Hoy ha comenzado el SAS Forum 2014, donde están teniendo lugar interesantes ponencias y casos de negocios sobre Big Data Analytics.



SAS Forum 2014

martes, 7 de octubre de 2014

Importar hoja Excel a tabla SAS (proc import)

Es bastante común trabajar con hojas Excel como fuente de datos. Existen variadas formas de realizar la importación a tabla SAS desde hoja Excel: utilización de componentes de importación (Enterprise Guidecards de importación, paso previo a formato csv y utilización de lectura vía INFILE. En el ejemplo que mostramos a continuación empleamos el procedimiento proc import.



proc import datafile= "/ruta/..../.../fichero_excel.xls"
dbms=XLS out=lectura_excel
replace;
     sheet="nombre_hija";
     getnames=YES;          
run;
proc print data=lectura_excel;
run;

Explicación de opciones:
dbms: tipo de gestor del cual es extraen los datos (excel, access, ..)
Sheet: hoja particular del libro excel
getnames: indica si se mantienen las cabeceras
out: se especifica la tabla sas de salida
Range:  especificamos un rango de lectura concreto.


Más info...

miércoles, 1 de octubre de 2014

SQL Joins: una visualización rápida

Siempre me ha resultado de mucha utilidad y por eso lo adjunto el gráfico de abajo en el que queda claro qué resultado se obtiene según que tipo de join se haga en una SQL.


martes, 26 de agosto de 2014

Tutorial de SAS

En el siguiente link se incluye un tutorial de SAS/BASE que pretende ser de utilidad para todos aquellos que se inician en el uso de esta herramienta.




Tutorial SAS

Como ya indicamos en un post anterior, un grupo de profesionales especializados en Business Intelligence estamos preparando cursos de formación a medida 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 Rstudio 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:  formacion@datademy.es


El curso de SAS ya está organizado y planificado: Formación SAS


miércoles, 20 de agosto de 2014

Excel: refresco automático de origen de datos en tablas dinámicas

Dada la estrecha relación de Excel con los procesos de B.I. y de análisis de información, vamos a iniciar una serie de posts de Excel, en el que veremos diferentes utilidades de aplicación al análisis de datos.



Es habitual en un libro Excel en el que estamos analizando una tabla de datos, el disponer diferentes tablas dinámicas que apuntan a la misma tabla fuente de datos, pero muestran la información desde una diferente perspectiva camibiando el nivel de detalle, los ejes de análisis, los filtros o realizando zoom específicos sobre determinados datos. De forma, que podemos tener un conjunto de tablas dinámicas estructuradas en diferentes hojas, pero apuntando al mismo origen de datos: hoja de detalle, fichero externo, tabla access o tabla sql server externa, etc..

Un cambio de estructura o simplemente de nombre en nuestro origen de datos nos obligaría a volver a vincular todas las tablas dinámicas apuntando al nuevo origen de datos. Podemos automatizar este proceso realizando el vínculo solo para una taba dinámica que utilizaremos como tabla de referencia, para después actualizar el resto mediante una macro que recorra todas las tablas dinámicas actualizando el origen de datos en base al origen vinculado a la tabla dinámica de referencia.

El código de la macro sería el siguiente:

Sub Vincula_Tablas()

Dim pt As PivotTable
Dim ws As Worksheet

 ' seleccionamos la tabla dinámica de referencia, situada en la hoja: "hoja de    referencia", si hubiera
 ' varias tablas en esta hoja, deberíamos seleccionar la que corresponda
Set ptMaes = Worksheets("HOJA REFERENCIA").PivotTables(1)
 'actualizamos la configuración al resto de tablas dinámicas de el libro de trabajo
For Each ws In ActiveWorkbook.Worksheets ' recorre todas las hojas
  For Each pt In ws.PivotTables ' recorre todas las tablas dinámicas de la hoja
    pt.CacheIndex = ptMaes.CacheIndex ' actualiza origen datos
  Next pt  ' fin bucle tablas dinámicas
Next ws ' fin bucle hojas 

End Sub

De igual forma, si tuviéramos que actualizar todas las tablas dinámicas, debido a un cambio en los datos de las fuentes origen, podemos hacerlo de modo similar:


Sub Actualiza_Tablas()

Dim pt As PivotTable
Dim ws As Worksheet

For Each ws In ActiveWorkbook.Worksheets ' recorre todas las      hojas
  For Each pt In ws.PivotTables ' recorre todas las tablas dinámicas de la hoja
    pt.PivotCache.Refresh  ' actualiza tabla dinámica
  Next pt  ' fin bucle tablas dinámicas
Next ws ' fin bucle hojas 

End Sub



sábado, 16 de agosto de 2014

Métodos para exportar a Excel desde SAS

Con frecuencia es necesario realizar una exportación de datos de tabla SAS a Excel.

Siempre existe la posibilidad de realizar la exportación de forma manual, empleando las utilidades que dispone SAS para ello. Por ejemplo, desde SAS Entreprise Guide.


A continuación mostramos dos ejemplos de métodos de exportación para poder realizarlo desde código SAS/BASE, la primera utiliza el procedimienro 'proc export' y la segunda la utilidad de exportación ODS (Output Delivery System).


/* Creamos la tabla de ejemplo */

data clientes;
length nombre $20. ciudad $20. edad 8.;
nombre = 'Pepe';ciudad = 'Madrid';edad = 30;
output;
nombre = 'Luis';ciudad = 'Valencia';edad = 40;
output;
nombre = 'Ana';ciudad = 'Murcia';edad = 50;
output;
run;

/* METODO 1 */
/* Emplendo procedimiento export */
proc export data=clientes
     outfile="C:\TEMP\pruebas_sas\clientes.xls"  dbms=EXCEL2007;
run;

/* METODO 2 */
/* Exportamos empleando el ODS (output delivery system) */
filename sasexcel 'C:\TEMP\pruebas_sas\clientes.csv';
ods csv file = sasexcel;
proc print data=clientes;
run;
ods csv close;
ods listing;


Una vez realizada la exportación el tratamiento es puramente Excel donde podremos utilizar las técnicas propios de esta herramienta y sacarle partido con webs útiles como Excel y VBA

Más info

viernes, 1 de agosto de 2014

Modo vacaciones

Lanzamos el siguiente script esperando entrar en breve en modo vacaciones:

proc sql;
create table vacaciones as (
select descanso, familia, amigos, playa, sol, viajes, libros, mochila, caminatas, bares, tapas, helados
from verano where periodo = 201408 and movil_oficina = 'OUT')
quit;

Para intentar no hacer esto:



Sino esto:


que es lo que toca....

Felices vacaciones!!

Proximamente...




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

viernes, 27 de junio de 2014

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

Continuamos con la serie de posts, en la que mostramos componentes de tratamientos de datos codificados en las herramientas: SAS, SPSS y R.




Ejemplo 7. Obtener agregados:

SAS:

proc summary data=tabla1 noprint nway;
   class cod_cliente ;
   output out=tabla_ag(drop=_type_ _freq_)
   sum(arpu) = suma_arpu mean(arpu) = media_arpu ;
run;


SPSS:

aggregate outfile 'c:\temp\tabla_ag.sav'
 /break cod_cliente
 /suma­_arpu = sum(arpu).
 /media_arpu = mean(arpu)
get file 'c:\temp\tabla1.sav'.
list.


R:
tabla_ag <- aggregate(tabla1["arpu"], by=list(cod_cliente=tabla1$cod_cliente), FUN=sum)


Ejemplo 8. Eliminar duplicados:

SAS:

proc sort data=tabla1 nodupkeys;
by cod_cliente;
run;


SPSS:

GET FILE='C:\temp\tabla1.sav'.
SORT CASES BY cod_cliente .
MATCH FILES /FILE = *
/BY cod_cliente /LAST = ultimo .
FILTER BY ultimo .
EXECUTE.

R:

tabla1_uniq <- unique(tabla1)


Ejemplo 9. Recodificación variables:

SAS:

data tabla2;
set tabla1;
if arpu >= 0 and arpu <= 10 then do;
       grupo_arpu = 1;
end;
else do;
       if arpu > 10 and arpu <= 20 then do;
             grupo_arpu = 2;
       end;
       else do;
             grupo_arpu = 3;
       end;
end;
run;

SPSS:

GET FILE='C:\temp\tabla1.sav'.
RECODE arpu (lo thru 10=1) (11 thru 20=2) (21 thru hi=3) into grupo_arpu.
EXECUTE.
SAVE OUTFILE = 'C:\temp\tabla2.sav'.

R:

tabla1$grupo_arpu[tabla1$arpu>=0 & tabla1$arpu <= 10 ] <- 1
tabla1$grupo_arpu[tabla1$arpu>10 & tabla1$arpu <= 20 ] <- 2
tabla1$grupo_arpu[tabla1$arpu>20 ] <- 3


Ejemplo 10. Renombrar variables:

SAS:

data tabla1(rename=(cod_cliente=id_cliente));
set tabla1;
run;


SPSS:

GET FILE='C:\temp\tabla1.sav'.
RENAME VARIABLES (cod_cliente = id_cliente).
EXECUTE.
SAVE OUTFILE = 'C:\temp\tabla2.sav'.

R:

colnames(tabla1)[colnames(tabla1)=="cod_cliente"] <- "id_cliente"


Ejemplo 11. Funciones aritméticas:

SAS:
data tabla_num;
input var1-var4;
resto= mod(var4,3);
media = mean(of var1-var4);
media_ent = int(media);
cards;
1 . 3 4
5 6 7 8
9 . . 12
;
run;


SPSS:

DATA LIST LIST (",") /var1 var2 var3 var4.
BEGIN DATA
1, , 3, 4
5, 6, 7, 8
9, , , 12
END DATA.
COMPUTE resto = MOD(var4, 3).
COMPUTE media = MEAN.3(var1, var2, var3, var4).
COMPUTE media_ent = TRUNC(MEAN(var1 TO var4)).
EXECUTE.
SAVE OUTFILE = 'C:\temp\tabla_num.sav'.

R:


tabla1$media <- (tabla1$var1 + tabla1$var2 + tabla1$var3 + tabla1$var4)/4
tabla1$resto <- tabla1$var4 %% 3
tabla1$media_ent <- trunc(tabla1$media)


Ejemplo 12. Funciones tratamiento texto:

SAS:

data tabla_car;
length cadena $50.
set tabla_num;
cadena = cat(var1,"-",var2,"-",var3);
run;

SPSS:

GET FILE='C:\temp\tabla_num.sav'.
STRING cadena (A50).
COMPUTE cadena =
CONCAT((STRING(var1)), "-",(STRING(var2)), "-",(STRING(var3))).
EXECUTE.
SAVE OUTFILE = 'C:\temp\tabla_car.sav'.

R:

tabla1$cadena = paste(tabla1$var1, tabla1$var2, tabla1$var3, sep='-')

Formación SAS

jueves, 26 de junio de 2014

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

Existen en el mercado numerosas herramientas para tratamiento de datos. En este post, nos vamos a centrar en algunas de las más utilizadas: SAS, SPSS y R. Sin entrar a valorar la mejor o peor adecuación de cada una de ellas al tipo de proyecto en el que trabajemos, sus ventajas o sus inconvenientes,  lo que es evidente es que son tres herramientas muy extendidas.  

En este post, empezamos una serie, en la que mostraremos ejemplos de manipulación de datos en las tres herramientas, con objeto de tener el mismo código traducido a las tres herramientas. Estos ejemplos pretenden ser de ayuda para que usuarios de una de las tres herramientas puedan empezar a conocer las otras dos o también como ayuda en un proyecto de migración de procesos de una herramienta a otra.



Ejemplo 1. Obtener datos de una BBDD vía ODBC:

SAS:

proc sql;
connect to odbc(dsn=dm_demo uid=user pwd=****);
create table tabla1 as
select *
from connection to odbc(
select *
from tabla_bbdd
);
quit;

SPSS:

*tabla1.sps.
GET DATA /TYPE=ODBC /CONNECT=
'DSN=MS Access Database;DBQ=/examples/data/dm_demo.mdb;'+
'DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;'
/SQL = 'SELECT * FROM tabla_bbdd'.
EXECUTE.

R:

library(RODBC)
conndb <- odbcConnect("dsn1", uid = "user", pwd = "****")
tabla1 <- sqlQuery(conndb,"SELECT * FROM tabla_bbdd").


Ejemplo 2. Lectura fichero Excel (.xls):

SAS:

proc import datafile='C:\temp\datos_excel.xls'
dbms=excel2000 replace out=tabla_excel;
sheet="Hoja1";
range="A2:I15";
getnames=yes;
run;

SPSS:

*tabla_excel.sps.
GET DATA
/TYPE=XLS
/FILE='C:\temp\datos_excel.xls'
/SHEET=NAME 'Hoja1'
/CELLRANGE=RANGE 'A2:I15'
/READNAMES=on .

R:

tabla_excel <- read.table("C:/temp/datos_excel.csv", header=TRUE, sep=";", na.strings="NA", dec=".", strip.white=TRUE)



Ejemplo 3. Lectura fichero plano (txt):

SAS:

data tabla_entrada;                                                                                                                            
 infile 'C:\temp\entrada.txt' dlm = ';' ;                                                                                            input  cod_cliente:8. des_cliente:$20.;                                                                                                     
run; 

SPSS:

*table_entrada.sps.
GET DATA /TYPE = TXT
/FILE = 'C:\temp\entrada.txt'
/DELIMITERS = ";"
/QUALIFIER = '"'
/ARRANGEMENT = DELIMITED
/FIRSTCASE = 2
/VARIABLES = cod_cliente F1 des_cliente A20


R:

tabla_entrada <- read.table("C:/temp/entrada.txt", header=FALSE, sep=";", na.strings="NA",
  dec=".", strip.white=TRUE)
nombres<-c("cod_cliente","des_cliente")  /* nombres de los campos */
names(tabla_entrada)<-nombres


Ejemplo 4. Crear tabla:

SAS:

data tabla1;
input cod_cliente des_cliente $  arpu  ;
datalines;
1 JVG 25
2 PAF 40
3 AAG 35
;
run;



SPSS:

DATA LIST LIST / cod_cliente des_cliente (A10) arpu.
BEGIN DATA.
1 JVG 25
2 PAF 40
3 AAG 35
END DATA.

SAVE OUTFILE = "tabla1.sav".
LIST.


R:

cod_cliente <- c(1,2,3)
des_cliente <- c("JVG","PAF","AAG")
arpu <- c(25,40,35)
tabla1 <- data.frame(cod_cliente, des_cliente, arpu)


Ejemplo 5. Cruce de tablas (merge):

SAS:

proc sort data=tabla1;
by cod_cliente;
run;

proc sort data=tabla2;
by cod_cliente;
run;

data tabla_merge;
merge tabla1 tabla2;
by cod_cliente;
run;


SPSS:

GET FILE='C:\temp\tabla1.sav'.
SORT CASES BY cod_cliente.
DATASET NAME tabla1
GET FILE='C:\temp\tabla2.sav'.
SORT CASES BY cod_cliente.
DATASET NAME tabla2.
MATCH FILES /FILE=*
/FILE='tabla1'
/FILE='tabla2'
/BY cod_cliente.
EXECUTE.


R:

tabla_merge <- merge(tabla1, tabla2, all=FALSE, by="cod_cliente")



Ejemplo 6. Unir dos tablas:

SAS:

data tabla_union;
set tabla1 tabla2;
run;


SPSS:

*tabla_union.sps.
ADD FILES
/FILE = 'C:\temp\tabla1.sav'
/FILE = 'C:\temp\tabla2.sav'
EXECUTE.


R:


tabla_union  <- rbind(tabla1,tabla2)

Más info...