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;


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow