Sunteți pe pagina 1din 10

6 Capitulo: Variables en SAS

6.1 Atributos de las variables en SAS

En SAS solo hay dos tipos de variables, variables numéricas y variables cadena. Los nombres de las variables en SAS tienen que seguir unas determinadas reglas:

1. La longitud del nombre puede ser de hasta 32 caracteres.

2. Los nombres deben comenzar con una letra o el carácter (_).

3. Los nombres de las variables sólo pueden formarse con letras, números o barra baja, pero no puede contener los símbolos siguientes: % $ ! * & # @.

4. Los nombres pueden ser en mayúsculas o minúsculas, aunque el SAS no diferencia entre ellas.

Las variables se crean generalmente en el paso DATA. Las principales formas de crear variables son:

Utilizando una sentencia de asignación: area= 2*PI**2.

Leyendo datos con INPUT en un paso DATA.

Especificando una nueva variable en una sentencia FORMAT o INFORMAT.

Especificando una nueva variable en una sentencia LENGTH.

Especificando una nueva variable en una sentencia ATTRIB.

Utilizando la opción IN= opciones de Data Set.

Las características de una variable en SAS se llaman atributos y se pueden declarar o modificar con las sentencias siguientes:

FORMAT

INFORMAT

LENGHT

ATTRIB

Sentencia FORMAT

La sentencia FORMAT permite especificar el formato de escritura de una variable. En la sentencia FORMAT se declara una o más variables seguidas del formato a aplicar:

FORMAT variable format.;

FORMAT variable1 variable2

variablen format.;

FORMAT variable1 format1. variable2

;

Statistical Analysis System

DATA

Sentencia INFORMAT

La sentencia INFORMAT se comporta de igual forma y tiene las mismas opciones que la sentencia FORMAT. La sentencia INFORMAT se utiliza para aplicar un formato determinado a una variable cuando esta se lee con una sentencia INPUT.

Sentencia LABEL

La sentencia LABEL asigna una etiqueta a una variable.

LABEL variable =’label’

Sentencia LENGHT

Cambia la longitud de una variable.

LENGHT variable <más variables> <$> longitud;

LENGHT DEFAULT = n;

La segunda opción de la sentencia LENGHT sólo se puede utilizar con variables numéricas y cambia la longitud por defecto de las nuevas variables numéricas que se definan.

Sentencia ATTRIB

Permite asignar las características generales de una o varias variables. Esto es, da formato, etiqueta y fija la longitud de las variables.

ATTRIB variables FORMAT=formato LABEL=’etiqueta’ LENGHT=longitud;

Opción IN

IN= opciones de Data Set crea una variable binaria (0, 1) especial que sirve a modo de bandera para saber si la observación pertenece al DataSet o no pertenece. La variable toma el valor 1 si pertenece y toma el valor cero en caso contraio. Esta opción IN se puede utilizar con las sentencias SET, MERGE y UPDATE del paso DATA.

En el ejemplo siguiente se unen dos archivos de datos SAS: Viejo y Nuevo. La opción IN crea una nueva variable flag (bandera) que indica si la observación proviene del DataSet Nuevo.

- 1 -

Statistical Analysis System

DATA

DATA Viejo;

INPUT ID @4 Nombre $ 9. Edad Nota Sexo $;

DATALINES;

1

Manuel

16

6.8

M

3

Elena

13

6.2

F

5

Rosa

17

5.9

F

7

M. Flavia

18

7.0

F

9

Prudencio

14

5.9

M

11

Casimira

15

8.7

F

;

PROC PRINT DATA = Viejo;

RUN;

DATA Nuevo;

INPUT ID @4 Nombre $ 9. Edad Nota Sexo $;

DATALINES;

2

Jose Luis

14

6.8

M

8

Victoria

12

6.2

F

4

Gerardo

17

9.7

M

10

Sisebuta

19

7.4

F

;

PROC PRINT DATA = Nuevo; RUN; /* Ordenamos los ficheros por la variable ID */ PROC SORT DATA= VIEJO; BY ID; PROC SORT DATA= NUEVO; BY ID; DATA Junto; MERGE Viejo Nuevo(IN=x); BY ID; Flag = x; RUN; PROC PRINT DATA= Junto; RUN;

- 2 -

Statistical Analysis System

DATA

6.2 Trasformación de tipos de variables

Para transformar los tipos de variables en SAS se dispone de las sentencias INPUT y PUT.

Transformación de tipo carácter a numérico.

Para trasformar una variable carácter (con contenido numérico) a variable numérica se dispone de dos métodos:

1.- Se realiza una operación numérica con la variable a transformar.

Ejemplo 1:

DATA uno;

x = '2009';

numero1 = x*4; numero2 = x/11; numero3 = x**2; numero4 = x + 64; numero5 = sum(x, 12); /*Función numérica*/ PROC CONTENTS; RUN;

2.- Por medio de la sentencia INPUT(variable, formato)

Ejemplo 2: Transformar de carácter a numérico.

DATA dos;

x = '2009';

numero6 = INPUT(x,best8.); PROC CONTENTS;

RUN;

Ejemplo 3: Trasformar de carácter a fecha.

DATA tres;

x ='11/03/01';

Fecha = INPUT (x, ddmmyy10.); PROC CONTENTS;

PROC PRINT; FORMAT Fecha ddmmyy10.;

RUN;

Transformación de tipo carácter a numérico.

Para trasformar una variable numérica a variable carácter se utiliza la sentencia PUT(variable, formato)

Ejemplo 4: Transformar de numérico a carácter.

- 3 -

Statistical Analysis System

DATA

DATA cuatro; x = 23456; Caracter = PUT (x, 5.); PROC CONTENTS; RUN;

6.3 Variables automáticas

Las variables automáticas o variables internas son variables creadas en el paso DATA

o en alguna sentencia del paso DATA. Estas variables no son presentadas en la

ventana OUTPUT, sin embargo se pueden utilizar dentro de cualquier programa SAS.

Las variables automáticas se caracterizan por que su nombre comienza y finaliza con

el carácter barra baja.

En cualquier paso DATA al menos se crean:

_N_

Cuenta el número de veces que se ha realizado el paso DATA.

_ERROR_

Su valor por defecto es 0. Si se produce algún error cambia el valor a 1.

6.4 Lista de variables en SAS

Las listas de variables en SAS es un método abreviado para referirnos a un conjunto de variables sin tener que nombrar una a una. En SAS se distinguen las siguientes listas de variables:

1. Lista de rango numérico:

Se aplica a un conjunto de variables numéricas que tiene el mismo nombre salvo un sufijo numérico:

Para nombrar

Se utiliza

x1,x2,x3,…,xn

x1-xn

var1, var2, var3,…,varn var1-varn La numeración tiene que ser consecutiva. Ejemplo:

DATA ;

INPUT x1-xn;

2. Lista de rango de nombres:

Se aplica para referirse a las posiciones de las variables dentro de un DataSet. Las diferentes opciones son:

- 4 -

Statistical Analysis System

DATA

Lista de Rango de Nombres

Opción

Se refiere a:

x--a

Todas las variables ordenadas tal y como se encuentran en el fichero de datos desde la variable x hasta la variable a (incluidas x y a)

x-numeric-a

Todas las variables numéricas que hay entre las variables x y a (incluidas x y a)

x-character-a

Todas las variables carácter que hay entre las variables x y a (incluidas x y a)

Ejemplos:

Dada la sentencia:

INPUT id nombre $ altura peso salario longitud ;

/* Guardar las variables numéricas id, nombre, altura, peso, salario, longitud*/

KEEP id-numeric-salario;

/*Guardar las variables nombre, altura, peso, salario */

KEEP nombresalario;

3. Lista de prefijos de nombre

Es

variables:

una

característica

que

permiten

algunas

funciones.

Salario_Ene, Salario_Feb,…., Salario_Dic

La sentencia,

SUM (OF Salario:)

Calculará la suma de las variables.

- 5 -

Si

tenemos

las

Statistical Analysis System

DATA

4. Listas especiales de nombres Son las siguientes:

_NUMERIC_ se refiere a todas las variables numéricas del DataSet. _CHARACTER_ se refiere a todas las variables carácter del DataSet. _ALL_ se refiere a todas las variables del DataSet.

5. Listas de rango de caracteres en la sentencia INPUT. No hay una forma directa de hacer una lista de variables carácter del tipo de las variables numéricas. Sin embrago, se puede conseguir el mismo efecto con la combinación de dos sentecias, como se muestra en el ejemplo siguiente:

Data uno; length u1 - u3 $1. ; input u1 - u3 ; datalines;

a b c d r f g h v
a
b c
d
r f
g
h v

;

proc print; run;

6.5 Otras sentencias asociadas a las variables SAS

Otras sentencias asociadas a las variables son

6.5. 1.

Sentencia DROP

Permite especificar que variables se eliminan de la memoria del paso DATA.

DROP = lista de variables ;

DROP

lista de variables ;

Ejemplo 1: DROP en la sentencia DATA.

DATA nuevo2 (drop=nombre talla); /*Elimina las variables al escribir el fichero nuevo2 */ SET alumnos; PROC PRINT; RUN;

Ejemplo 2: DROP en la sentencia SET.

DATA nuevo2; SET alumnos (drop=nombre talla); /* No recupera las variables */ PROC PRINT; RUN;

Ejemplo 3: DROP

DATA nuevo2;

- 6 -

Statistical Analysis System

DATA

SET alumnos; DROP nombre talla; /* A partir de este punto la variable se borra */ PROC PRINT; RUN;

6.5. 2.

Sentencia KEEP

Permite especificar que variables se mantendrán en la memoria del paso DATA.

KEEP= <lista de variables> ;

KEEP

<lista de variables> ;

Ejemplo 1: KEEP en la sentencia DATA.

DATA nuevo2 (KEEP=nombre talla);/* Sólo guarda las variables nombre y talla */ SET alumnos; PROC PRINT; RUN;

Ejemplo 2: KEEP en la sentencia SET.

DATA nuevo2; SET alumnos (KEEP=nombre talla); /* Sólo recupera las variables nombre y talla */ PROC PRINT; RUN;

Ejemplo 3: KEEP

DATA nuevo2; SET alumnos; KEEP nombre talla; /* A partir de este punto sólo permanecen las variables nombre y talla */ PROC PRINT; RUN;

6.5. 3.

Sentencia RENAME

Asigna un nuevo nombre a la variable.

RENAME anterior = nuevo

Ejemplo 1:

DATA nuevo2 (RENAME=(nombre=apodo)); SET alumnos; PROC PRINT; RUN;

Ejemplo 2:

DATA nuevo2; SET alumnos (RENAME=(nombre=apodo)); PROC PRINT; RUN;

- 7 -

Statistical Analysis System

DATA

Ejemplo 3:

DATA nuevo2; SET alumnos; RENAME nombre=apodo Edad=tiempo_de _vida; PROC PRINT; RUN;

 

Status of Variables and Variable Names When Dropping, Keeping, and Renaming Variables

Where

Data Set Option or Statement

Purpose

Status of Variable or Variable Name

Specified

Input data

DROP=

includes or excludes variables from processing

if excluded, variables are not available for use in DATA step

set

KEEP=

   
   

RENAME=

changes name of variable before processing

use new name in program statements and output data set options; use old name in other input data set options

Output data

DROP, KEEP

specifies which variables are written to all output data sets

all variables available for processing

set

   

RENAME

changes name of variables in all output data sets

use old name in program statements; use new name in output data set options

   

DROP=

specifies which variables are written to individual output data sets

all variables are available for processing

KEEP=

   

RENAME=

changes name of variables in individual output data sets

use old name in program statements and other output data set options

- 8 -

Statistical Analysis System

DATA

6.6 Etiquetas de Valores

En SAS no hay una sentencia para fijar las etiquetas de valores de una variable. Sin

embargo, por medio del procedimiento FORMAT (PROC FORMAT) se puede

conseguir el mismo efecto.

El procedimiento FORMAT crea nuevos formatos que una vez definidos se utilizan

como un formato más del sistema SAS. Su expresión general es:

PROC FORMAT ;

VALUE variable

Ejemplo

rango1 valor1

rango2 valor2

………………

rangoN valorN;

PROC FORMAT; VALUE sexo

'm' 0

'h'

1;

A partir de estar definido el formato sexo se puede utilizar como uno más,

FORMAT genero sexo. ;

Ejemplo

PROC FORMAT;

VALUE cierto

'No' 0

'Si'

1;

FORMAT ABC El_Mundo El_Pais cierto. ;

- 9 -