Está en la página 1de 22

SAS

INTERMEDIO
Giampaolo Orlandoni M. J Josefa f R Ramoni i P P. orlandoni@yahoo.com orlandoni@yahoo com orlandon@ula.ve
Instituto de Estadstica Aplicada Universidad de Los Andes Mrida. Venezuela

ARRAY SAS

1. Definicin de ARRAY en SAS 2. Clasificacin de Arrays 3 Ejemplos y Aplicaciones 3. 4. Array y Proc Transpose

ARRAYS: Arreglos SAS Arreglo: conjunto de variables del mismo tipo, agrupadas bajo un nico identificador. Cada una de las variables o elementos del arreglo se referencia mediante un ndice que representa la posicin del mismo dentro del arreglo. Clasificacin de arreglos en SAS de acuerdo a la forma de acceso: Arreglos A l con subndice b di explcito l it Arreglos con subndice implcito

Arrays con Subndice Explcito


Sintaxis: ARRAY <nomarreglo> [{n}] [$] [longitud] elementos [(valores iniciales)];
Donde:

n: indica el nmero de elementos del arreglo, arreglo se puede omitir o colocar asterisco para eliminar la enumeracin en los elementos. $: $ para elementos l t d tipo de ti carcter. t longitud: define longitud comn para todos los elementos. elementos: variables declaradas del data set que sustituyen a los elementos del arreglo. valores iniciales: para crear variables o elementos con valores iniciales.

Arrays con Subndice Explcito


1-Array de los meses del ao:
INPUT AN ENE FEB MAR ABR MAY JUN JUL AGO SEP OCT NOV DIC;

ARRAY A{12} ENE--DIC; Se crea un arreglo de 12 elementos donde A[1] corresponde a ENE, A[2] corresponde a FEB, etc.

2-Si

arreglo se corresponde con el nmero de variables definidas: (desde MES1 A MES12 hay 12 variables).

se

omite

n, el nmero de elementos del

INPUT AN MES1-MES12; ARRAY A MES1-MES12;

2_1_Array_EjemplosIntrod.sas

Clculo pluviosidad trimestral y total


DATA LLUVIA; set DS; ARRAY M{12}; ARRAY TRI{4}; Tot=0; DO I=1 TO 4; ; TRI{I}=0; DO J=1 TO 3; TRI{I}+M{(I 1)*3+J}; TRI{I}+M{(I-1)*3+J}; END; Tot=Tot+TRI{I}; END; Proc print data=Lluvia; var tri1-tri4; Run;

Ejemplo Arrays.

CREACION VARIABLES INDICADORAS (DUMMY)


Mtodo Manual:

sas2\2_2_Array_Dummy.sas 2\2 2 A D

DATA DUMMY1; edad1=(edad=1); edad2=(edad=2); edad3=(edad=3); edad4=(edad=4); edad5=(edad=5);

Mtodo Array:
DATA DUMMY2 (Drop = i);

ARRAY A {5} edad1-edad5; DO


End;

i=1 to 5; A(i) = (edad=i);

DO i = 1 to dim(A);

Arrays Bidimensionales Subndice Explcito Bidimensional


DATA Lluvia2; ; set DS; ; ARRAY Mes {4,3} M1-M12; ARRAY TRI{4}; Tot=0; DO I=1 TO 4; TRI{I} 0 TRI{I}=0; DO J=1 TO 3; TRI{I} + MES{I,J}; MES{I J}; END; ot ot { }; Tot=Tot+TRI{I}; END;

Arrays con Subndice Implcito


Sintaxis: ARRAY <nomarreglo>{ndice} [$] [longitud] elementos;
ndice: di nombre de la variable ndice que se usar para definir el actual elemento que se est procesando. Si no se especifica, el sistema define automticamente la variable _I_ I y la coloca en el vector de datos, pero no la escribe en el archivo que se est creando. $: para elementos de tipo carcter. carcter longitud: define elementos. longitud comn para todos los

elementos: variables declaradas del data set que sustituyen a los elementos del arreglo.

Arrays con Subndice Implcito


Valores de estatura en p pulgadas g y p peso en libras. Convertirlos a centmetros y kilogramos respectivamente. DATA kgcm; k INPUT Id $ ALT1 PE1 ALT2 PE2 ALT3 PE3 ALT4 PE4; ARRAY ALTURA ALT1-ALT4; ARRAY PESO PE1-PE4; DO OVER ALTURA; ALTURA ALTURA 2.54; ALTURA=ALTURA*2.54; PESO=PESO*0.454; END; Datalines; A 65 166 67 175 55 110 69 178 B 66 133 67 161 75 200 72 180 C 72 182 63 115 50 105 67 190 ; Proc Print data=kgcm;run;

Nuevas Variables definidas con Arrays


DATA AltPeso; INPUT PesId $ ALT1 - ALT5 PES1 - PES5; ARRAY ALTPul(*) ALT1-ALT5; ARRAY PESOLib( PESOLib(*) ) PES1 PES1-PES5; PES5; Array AltCm(*) ALcm1-ALcm5; Array PesKg(*) PKg1-PKg5; DO J=1 to 5; AltCm(j) = ALTPul(j)*2.54; PESKg(j) j = PESOLib(j)*0.454; ib j END; Drop j; Datalines; A 65 67 55 69 70 166 175 110 178 180 B 66 67 75 72 75 133 161 200 180 182 ; run; Proc Print data=AltPeso; run;

Ejemplo Arreglo Datos Longitudinales


Establecimientos Supervisados n= 61 ocho meses consecutivos (x1 - x8) Se califican en una escala de 0 (mal) a 28 (excelente) Datos Faltantes: -9 S asignan Se i a d dos grupos d de supervisores: i Grupo 0, con Grupo G 1 1, con n1=34 n2=27 2 2 durante

sas2\2-EJ4_ArrayLongitudinalEstable.sas

Ejemplo.

Arreglo Datos Longitudinales

Data Establ(keep=idno ( p g grupo p x1-x8) ) EstbTmp(keep=idno grupo mes dep); Set longitudinal; idno=_n_;

array xarr {8} x1-x8; do i=1 to 8; if xarr{i}=-9 then xarr{i}=. ; mes i; mes=i; dep=xarr{i}; p EstbMes; ; output end; output Establ;
run;

EJERCICIOS con ARRAYS


Ej1-ARRAYS_DO sas2\2-EJ1 \ __ArreglosDo.sas g EJ2-TRANSPOSE. ARRAYS sas2\2 EJ2 TransposeArray sas sas2\2-EJ2_TransposeArray.sas EJ3-ARRAYS MED REPETIDAS sas2\2-EJ3_ProcTransp_ArraysMedRep.sas EJ4-ARRAYS DATOS LONGITUDINALES sas2\2-EJ4_ArrayLongitudinalEstable.sas

EJ5-CREACION VARIABLES INDICADORAS (DUMMY) Construir variables indicadoras correspondientes a la variable regin con la siguiente informacin: regin, data region ; input reg @@ ; datalines ; 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 ; Proc print data=region; Run;

CREACION VARIABLES INDICADORAS (DUMMY)


sas2\2_3_ArrayDummy2.sas data dummy; set region ;
** ARRAY EXPLICITO para crear variables dictomas ** a partir de la variable categrica regin ** Definir el arreglo explcito ARRAY dvar{5} r1-r5;

array dvar{5} r1-r5;


** Crear variables dictomas usando lazo DO;

Do i=1 to 5; if dvar{i}=. then dvar{i}=0 ; region coincide con el indice i; drop i; end ; proc sort; by reg ; proc print ; run ;
** Hacer el valor de la variable dvar=1 si el valor de

if reg = i then dvar{i} = 1 ;

EJ7-ARRAY HOTEL. Ejercicio 1


Data Hotel; Input Hotel $ G1-G6; datalines; HOTEL1 165 89 165.89 HOTEL2 215.32 HOTEL3 178.90 HOTEL4 210.78 HOTEL5 189.87 HOTEL6 312.15 HOTEL7 197.12 HOTEL8 240 98 240.98 HOTEL9 312.10 HOTEL10 187.98 ;

45.50 45 50 64.00 76.00 54.00 49.00 78.00 45.00 43 00 43.00 29.98 36.00

78.00 78 00 54.00 32.00 50.00 67.00 86.00 95.00 65 13 65.13 32.87 21.54

45.00 45 00 50.00 49.00 40.00 63.00 67.00 32.00 45 00 45.00 24.00 43.00

12.00 12 00 18.00 25.00 17.00 38.00 14.00 26.00 12 00 12.00 15.00 24.00

35.00 35 00 30.00 29.99 24.00 42.00 19.40 18.95 32 00 32.00 26.00 29.65

Datos: tarifas fuera de estacin de 10 hoteles. Calcular las tarifas en estacin (25% ms caras) Usar arreglos. arreglos

data TarifaEst(drop=i); set hotel(drop=hotel); array tar1{6} g1-g6; array tar2{6} est1 - est6; do i=1 to 6; tar2{i} = tar1{i}*1.25; end; d format g1 - g6 est1 - est6 comma7.2;
Obs 1 2 3 4 5 6 7 8 9 G1 G2 G3 78.00 54.00 32 00 32.00 50.00 67.00 86.00 95.00 65.13 32.87 21.54 G4 45.00 50.00 49 00 49.00 40.00 63.00 67.00 32.00 45.00 24.00 43.00 G5 12.00 18.00 25 00 25.00 17.00 38.00 14.00 26.00 12.00 15.00 24.00 G6 35.00 30.00 29 99 29.99 24.00 42.00 19.40 18.95 32.00 26.00 29.65 est1 est2 est3 97.50 67.50 40 00 40.00 62.50 83.75 165.89 45.50 215.32 64.00 178 90 76.00 178.90 76 00 210.78 54.00 189.87 49.00 312.15 78.00 197.12 45.00 240.98 43.00 312.10 29.98 207.36 56.88 269.15 80.00 223 63 95.00 223.63 95 00 263.48 67.50 237.34 61.25 390.19 97.50 246.40 56.25 301.23 53.75 390.13 37.48 234.98 45.00

run;
est4 56.25 62.50 61 25 61.25 50.00 78.75 est5 15.00 22.50 31 25 31.25 21.25 47.50 17.50 32.50 15.00 18.75 30.00 est6 43.75 37.50 37 49 37.49 30.00 52.50 24.25 23.69 40.00 32.50 37.06

107.50 83.75 118.75 40.00 81.41 41.09 26.93 56.25 30.00 53.75

10 187.98 36.00

EJ7-ARRAY HOTEL. Ejercicio 2


2-El presupuesto disponible para las seis categoras de gastos se resume en el siguiente vector: (g1,g2,g3,g4,g5,g6)=(175, 75, 25, 35, 25, 30) 2.1-Definir un array para asignar los montos del presupuesto como valores iniciales. 2.2-Determinar montos establecidas. las diferencias y las entre los

presupuestados

tarifas

data Presupuesto (drop= i); set hotel (drop=hotel); array presup{6} _temporary_ (175,75,25,35,25,30); array tar1{*} g1 - g6; array diff{6}; diff{6} do i=1 to dim(tar1); diff{i} = presup{i} - tar1{i}; end; run;

EJ7-ARRAY HOTEL. Ejercicio 3


3-Para determinar el gasto total en cada hotel es necesario agregar los impuestos. Hay dos tipos de impuesto (imp1, (imp1 imp2): (18.54 14 17.84 20 12 50 15 12.50 14.25 18 16.33 12 19.00 16 12.75 19 14.98 16 15.76 20 13.75 17); Calcular el gasto total

EJ7-ARRAY HOTEL. Ejercicio 3


data total;drop num; array impuesto{10,2} _temporary_
(18.54 14 17.84 20 12.50 15 14.25 18 16 33 12 16.33 19.00 16 12.75 19 14.98 16 15.76 20 13.75 17);

set GastoHotel; num = input(substr(hotel,6),2.); input(substr(hotel 6) 2 ); tax1 = impuesto{num,1}; tax2 = impuesto{num,2}; total = sum(of g1 g1-g6,tax1,tax2); g6 tax1 tax2); run;

También podría gustarte