Buscar..
Introducción
Los informes y formatos se utilizan para indicar a SAS cómo leer y escribir los datos respectivamente. Los informatos se usan comúnmente en una base de datos cuando se leen datos de un archivo externo. Los informatos rara vez se utilizan en los procesos. Los formatos se usan comúnmente tanto en pasos de datos como en PROCs.
Observaciones
Los formatos SAS convierten los valores numéricos o de caracteres en valores de caracteres. Se puede aplicar un format
utilizando un format
o put
declaración put
, que cambia la forma en que se muestra un valor, o usando la función put
para almacenar el valor formateado en una nueva variable.
Hay cuatro categorías de formatos:
- Carácter: indica a SAS que escriba valores de datos de caracteres a partir de variables de caracteres.
- Fecha y hora: indica a SAS que escriba valores de datos a partir de variables que representan fechas, horas y tiempos de datos.
- ISO 8601: indica a SAS que escriba los valores de fecha, hora y fecha y hora utilizando el estándar ISO 8601.
- Numérico: indica a SAS que escriba valores de datos numéricos a partir de variables numéricas.
Los formatos usualmente toman la forma <formatname><w>.<d>;
, siendo w
el ancho (incluidos los decimales y el punto), d
siendo el número de decimales.
Formatos de fecha comunes (aplicados a valores de fecha SAS):
-
date9.
por ejemplo, 02AUG2016 -
ddmmyyn8.
por ejemplo, 02082016 -
ddmmyy8.
por ejemplo 02/08/16 -
yymmdd10.
ej. 20160802 -
year4.
por ejemplo, 2016
Formatos numéricos comunes (aplicados a los números):
-
comma11.0
por ejemplo 1,234,567 -
comma12.2
por ejemplo 1,234,567.00 -
dollar11.2
eg $ 5,789.12 -
nlmnlgbp11.2
por ejemplo £ 2,468.02
Otros formatos:
-
$hex8.
, convierte cadena a hexadecimal -
$upcase.
, convierte la cadena a mayúsculas -
$quote.
, encierre una cadena entre comillas
Puede encontrar una lista completa de formatos aquí> https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a001263753.htm
Usando la declaración de formato
La declaración de format
aplica el formato dado a la variable especificada solo para fines de visualización , es decir, el valor subyacente no cambia.
data example1 ; Date = '02AUG2016'd ; /* stored as a SAS date, i.e. a number */ Date2 = '31AUG2016'd ; format Date monyy7. Date2 yymmddn8. ; run ;
Fecha | Fecha 2 |
---|---|
AUG2016 | 20160831 |
Uso de la declaración de formato para agrupar datos
Puede aplicar formatos dentro de un procedimiento, por ejemplo, para cambiar las agrupaciones dentro de un proc summary
o una proc freq
.
Agrupar fechas de SAS
data example2 ; do Date = '01JUN2016'dt to '31AUG2016'dt ; Days = 1 ; output ; end ; run ; /* Summarise by year & month */ proc summary data=example2 nway ; class Date ; var Days ; output out=example2_sum (drop=_TYPE_ _FREQ_) sum= ; format Date yymmn6. ; /* e.g. 201606 */ run ;
Fecha | Dias |
---|---|
201606 | 30 |
201607 | 31 |
201608 | 31 |
/* Summarise by month & year */ proc summary data=example2 nway ; class Date ; var Days ; output out=example2_sum2 (drop=_TYPE_ _FREQ_) sum= ; format Date monyy7. ; /* e.g. JUN2016 */ run ;
Fecha | Dias |
---|---|
JUN2016 | 30 |
JUL2016 | 31 |
AUG2016 | 31 |
La ventaja de utilizar un formato es que se conserva el orden natural.
Usando sashelp.class
como ejemplo, digamos que desea comparar la frecuencia de la primera letra de cada nombre. Podría usar la función substr()
para encontrar la primera letra y ejecutar una proc freq
en la nueva variable. Alternativamente, puede aplicar los $1.
Formato a la variable Name
:
proc freq data=sashelp.class ; table Name ; format Name $1. ; run ;
Nombre | CONTAR |
---|---|
UNA | 7 |
segundo | 4 |
do | 2 |
etc. |
Formatos personalizados
Los formatos personalizados, también conocidos como formatos definidos por el usuario, se pueden crear y utilizar como cualquier otro formato predeterminado.
/*Create new character format for state variables*/
PROC FORMAT;
VALUE $statef 'CA' = 'California'
'MA' = 'Massachusetts'
'NY' = 'New York';
/*Once created, you can use your custom format in PROC and DATA steps*/
PROC PRINT DATA=table;
FORMAT state-var $statef.;
RUN;
La variable state-var
se imprimirá de acuerdo con el nuevo formato. Por ejemplo, el valor 'CA'
se imprimirá como 'California'
. Si un valor no fue formateado, como 'CT'
, ese valor se imprimirá tal como aparece en el conjunto de datos.
Uso de informat para leer datos.
Informats se utiliza para decirle a SAS cómo leer los datos y se identifica con una declaración informat
.
data test;
infile test.csv;
informat id $6.
date mmddyy10.
cost comma10.2
;
input @1 id
@7 date
@20 cost
;
run;
Informats y Formats también se pueden usar juntos para leer los datos y escribirlos en un formato diferente, como con la siguiente variable salarial:
DATA workers;
informat first last $16.;
informat salary 12.1;
informat birthdate 8.;
input
first $
last $
birthdate
salary;
format salary dollar10.;
datalines;
John Smith 19810505 54998.5
Jane Doe 19950925 45884.5
Frank James 19600222 70000.5
Jamie Love 19630530 292000.5
;
run;