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

2 comentarios:

  1. ¿Tienes algún ejemplo de equivalencias con fechas?.
    Necesito un formato de fecha en SPSS para trabajar con fechas del tipo: dd/mm/yyyy, el equivalente al MMDDYY10 de SAS.
    gracias,

    ResponderEliminar
  2. Tienes que utilizar el formato ADATE12, equivalente al MMDDYY10 de SAS

    DATA LIST LIST
    /fecha_ejemplo (ADATE12).
    BEGIN DATA
    28/06/2014
    END DATA.
    EXECUTE.

    ResponderEliminar