Formato SAS PROC | Formato predefinido y definido por el usuario en SAS

1_proc_format_sas-3372865-4001362-png

He pasado una parte importante de mi carrera como especialista en visualización de datos. Soy muy exigente con el formato y la presentación de informes. Entonces, cuando comencé a usar SAS, enfrenté algunos desafíos al cambiar los formatos de números y caracteres, especialmente cuando se trataba de fechas. No es de extrañar que tanto Kunal como yo recibamos un buen número de consultas sobre este tema.

En SAS, hay varias opciones para mejorar los diseños de informes. En este artículo, discutiremos particularmente sobre los métodos para jugar con el formato de los valores de datos. Cabe señalar que estos cambios solo se aplican mientras se muestran los resultados. Cambiar el formato de salida no cambia la forma, los datos se almacenan en el back-end.

De forma predeterminada, SAS proporciona varios formatos integrados para manejar varios formatos, pero no son suficientes para cumplir con los requisitos personalizados que puedan tener sus datos. Por ejemplo, es posible que hayamos codificado Masculino y Femenino como M y F (o 0 y 1), pero mientras imprimimos querríamos mostrar el campo como MASCULINO y FEMENINO solamente. Otro ejemplo común es mostrar códigos de área en números de teléfono de 10 dígitos (por ejemplo, 123-3456-789).

PD: Este es un artículo largo en comparación con lo que suelo escribir, así que siéntete libre de digerirlo en pedazos.

El artículo está dividido en 2 partes generales: Primero, entendemos los formatos predefinidos y los formatos definidos por el usuario en SAS. A continuación, analizamos varias aplicaciones y ejemplos de estos conceptos.

1_proc_format_sas-6665279

Formatos SAS integrados

A continuación, se muestran datos de muestra que contienen detalles sobre el rendimiento del agente. Usaremos este conjunto de datos en ejemplos y discusión en este artículo. Aquí DOJ está en formato numérico, como lo define SAS de forma predeterminada, a partir del 1 de enero de 1960.

2_proc_format_data-2295727Veamos primero la sintaxis de la instrucción FORMAT: –

Sintaxis: – FORMATO Formato de variable (s);

Hagamos algunos ejercicios con la declaración de formato:

Ejemplo 1: Mostrar DOJ en formato DDMMYYYY:

Código:

Datos de impresión de proceso = Ventas;
Formato DOJ Fecha 9. ;
Correr;

Producción:

3_proc_format-6128743

Aquí está la lista de formatos de fecha predefinidos disponibles para cambiar el formato de salida de las variables:

4_proc_format-5452091

Ejemplo 2: mostrar el monto de ventas en dólares con una posición decimal

Código:

Datos de impresión de proceso = Ventas;
Formato Salesamount Dollar9.1;
Correr;

Producción:

5_proc_format_sas-1402548

Lista de formatos de fecha predefinidos disponibles para cambiar el formato de salida de las variables:

6_proc_format_sas1-3504838

Ejemplo 3: Muestre Salesamount en dólares con dos posiciones decimales con coma y DOJ en formato Weekdate.

Código:

Datos de impresión de proceso = Ventas;
Formato Monto de ventas Dolar12.2 DOJ WEEKDATE .;
Correr;

Producción:

7_proc_format_sas-2681156

Necesidad de formatos definidos por el usuario:

Hasta ahora hemos visto cómo cambiar el formato de números y fechas con formatos SAS integrados. Pero puede haber muchas ocasiones en las que los formatos integrados de SAS no satisfacen nuestras necesidades. Como en el conjunto de datos actual, queremos:

  1. Muestra «MASCULINO» y «FEMENINO» en lugar de «M» y «F»
  2. Redefina las categorías A, B, C, D y E como Ultra, Super, Average, Low y Poor
  3. Muestra la frecuencia de Salesamount en tres categorías » = 12000″

Todas estas cosas se pueden hacer con el paso de datos (o PROC SQL) con la instrucción If-Else (o cambiar caso), pero requerirá una nueva variable que almacenará estos valores formateados. Mientras que, si solo queremos cambiar la visualización (y no los valores en el conjunto de datos), entonces crear un formato definido por el usuario usando PROC FORMAT es una forma más eficiente de realizar estos cambios.

Formatos definidos por el usuario que utilizan Proc FORMAT

PROC FORMAT es un procedimiento que crea un mapeo de valores de datos en etiquetas de datos. El mapeo de FORMATO definido por el usuario es independiente de un CONJUNTO DE DATOS SAS y de variables y debe asignarse explícitamente en un DATASTEP y / o PROC posterior.

Sintaxis de PROC FORMAT: –

8_proc_format_sas-8064107

Reglas para definir FORMAT NAME:
  1. Para los valores de caracteres, el primer carácter debe ser un signo de dólar ($) y una letra o guión bajo como segundo carácter. Para valores numéricos, el nombre debe tener una letra o un guión bajo como primer carácter
  2. El nombre no puede terminar con un número
  3. No puede ser el nombre de un formato SAS existente
  4. No debe terminar con un punto en la declaración VALUE

Resolvamos los problemas discutidos anteriormente usando el formato PROC:

Problema 1 (y 2): Muestre M y F como Masculino y Femenino.

Código:

Formato de proceso;
Valor $ Genderfmt ‘M’ = ‘Masculino’
‘F’ = ‘Mujer’;
Correr;
Datos de impresión de proceso = Ventas;
Formato Género $ Genderfmt. ;
Correr;

Producción:

9_proc_format_sas-4009602De manera similar, podemos resolverlo para el problema 2. Defina la categoría A, B, C, D y E como Ultra, Super, Average, Low y Poor.

Problema 3: desea mostrar la frecuencia de Salesamount en tres categorías » = 12000″

Código:

Formato proc;
Valor Salegrp low-8000 = ‘<8000'
8000 – <12000 = '8000-12000'
12000-Alto = ‘> = 12000’;
Correr;
Proc Freq Data = Ventas;
Formato Salesamount Salegrp .;
Mesa Salesamount;
Correr;

Producción:

10_proc_format_sas-6560974

Arriba, he usado rangos para definir el formato. Se pueden utilizar para valores numéricos y de caracteres.

Las palabras clave especiales que se utilizan para definir los rangos son: –

a) Los rangos pueden ser múltiples valores separados por comas.

i) ‘A’, ‘B’, ‘C’
ii) 22, 44, 67

b) Los rangos pueden incluir o excluir los valores delimitadores, según el uso de varias palabras clave como:

i) 24 – 45: Incluye valores de 24 a 45 incluyendo 24 y 45.
ii) 24 <- 45: Incluye valores entre 24 a 45 incluyendo 45 y excluyendo 24.
iii) 24 – <45: Incluye valores entre 24 a 45 incluyendo 24 y excluyendo 45.
iv) 24 <- <45: Incluye valores entre 24 a 45 excluyendo 24 y 45.

c) BAJO se refiere al número mínimo disponible, ALTO se refiere al número más alto disponible y OTROS incluye todos los números no especificados. Otros también incluyen valores perdidos si no se especifica.

Algunos puntos importantes / aplicaciones a tener en cuenta sobre PROC FORMAT

  • PROC Format devuelve el valor original si no hemos incluido todos los valores de datos al definir el formato.

11_proc_format_sas-6398919

  • Podemos crear múltiples formatos en una sola instrucción PROC FORMAT, especificando múltiples valores en PROC Format

Código:

Formato de proceso;
Valor Salegrp low-8000 = ‘<8000'
8000 – <12000 = '8000-12000'
12000-Alto = ‘> = 12000’;
Valor $ Genderfmt ‘M’ = ‘Masculino’
‘F’ = ‘Mujer’;
Correr;
Datos de impresión de proceso = Ventas;
Formato Salesamount Salegrp. Género $ Genderfmt .;
Correr;

Producción:

12_proc_format_sas-4219573

  • PAGROC FORMAT se puede utilizar para crear combinaciones de datos eficientes

En PROC FORMAT, tenemos una opción CNTLIN, que nos permite crear un formato a partir de un conjunto de datos en lugar de una declaración de VALOR. Antes de usar esta opción, primero miramos las pautas a continuación: –

a) El conjunto de datos de entrada debe contener tres variables requeridas por PROC FORMAT: START, LABEL y FMTNAME.

b) Aquí START es el campo clave entre estas dos tablas y debe ser único en el conjunto de datos de entrada (conjunto de datos, estamos usando en CNTLIN opción).

c) La variable LABEL es el valor que queremos asignar a otro conjunto de datos.

d) La variable FMTNAME es el nombre del formato y debe pasarse entre comillas simples.

e) Después de definir el formato, podemos usar la función put para crear una variable en el conjunto de datos basada en el campo clave y el formato que hemos definido.

Ejemplo:

Digamos que queremos mapear el DOB del agente desde el conjunto de datos Agent_DOB (Datos de muestra) al conjunto de datos anterior13_proc_format_sas-7383015

Aquí queremos crear un formato basado en Agent_DOB y aplicarlo a Ventas. En Agent_DOB, consideraríamos AGT_ID (campo clave, entre ambos conjuntos de datos) como START, DOB como Label y FMTNAME = ‘$ AGENT’. Ahora mire las declaraciones (a continuación).

Agente de datos_DOB_Fmt;
Cambiar el nombre de AGT_ID = START;
Establecer Agent_DOB;
Etiqueta = DOB;
FMTNAME = ‘$ AGENT’;
Correr;
Formato de proceso CNTLIN = Agent_DOB_Fmt;
Correr;

14_proc_format_sas-9892599

El código anterior generó un formato usando el conjunto de datos Agent_DOB_Fmt y luego, para fusionarlo con el conjunto de datos SALES, se escribieron los pasos de datos (a continuación).

Data Sales_DOB;
Establecer ventas;
Fecha_nacimiento = Poner (Agt_ID, $ Agente.);
Correr;

15_proc_format_sas-4787747

Limitación de PROC FORMAT como fusión

Este es el mejor método cuando queremos fusionar una variable de otro conjunto de datos, pero si queremos agregar cinco o múltiples variables, entonces tenemos que repetir la instrucción PROC FORMAT tantas veces junto con la función PUT múltiple en el paso de datos. Entonces, prefiero usar MERGE o PROC SQL en tales casos.

  • Podemos guardar el formato SAS definido por el usuario para uso futuro.

Todos los formatos SAS se almacenan en un catálogo (colección de formatos). Cuando creamos un formato, se almacena en el catálogo. Si no especificamos el catálogo, SAS almacena los formatos en la biblioteca WORK en un catálogo llamado FORMATS. Al igual que otros conjuntos de datos de la biblioteca WORK, también se eliminan al final de la sesión.

Ahora, para guardar formatos definidos por el usuario, necesitamos especificar dónde almacenar el catálogo y cómo llamarlo. Esto se puede lograr almacenando formatos en una biblioteca que no sea WORK.

Paso 1 En primer lugar, tenemos que definir una biblioteca (aquí estoy usando la edición SAS University)

Sintaxis: – LIBNAME Library_Name «Path»
LIBNAME STATDATA “/ carpetas / miscarpetas / ECSTAT0”;

Step-2 Utilice la opción de biblioteca en formato PROC y proporcione un nombre de biblioteca con el nombre del archivo de formato. El nombre del archivo debe ser un nombre de conjunto de datos SAS válido.

Sintaxis: – PROC FORMAT LIBRARY = Library_Name.MYFILENAME;
Biblioteca de formato de proceso = STATDATA.Gender_Fmt;
Valor $ Genderfmt ‘M’ = ‘Masculino’
‘F’ = ‘Mujer’;
Correr;

Por encima de program ha creado un archivo llamado Gender_Fmt.sas7bcat en la ubicación de su directorio.

Ahora, siempre que queramos usar un formato almacenado, tenemos que decirle a SAS que busque formatos en ese archivo de catálogo. Esto se hace con el fmtsearch opción. Entonces, antes de usarlo, necesitamos escribir una declaración.

Sintaxis: – Opciones fmtsearch = (Library_Name.MYFILENAME)
Opciones fmtsearch = (STATDATA.Gender_Fmt); / * Después de esto podemos usar Gender_Fmt * /
Proc Print data = Ventas;
Formato Género $ Genderfmt .;
Correr;

El formato de imagen SAS crea plantillas en las que definimos cómo se muestran los números. Con el uso de PICTURE FORMAT, podemos superar múltiples problemas de visualización de números como: –

1. Colocación de decimales y comas

2. Incrustar caracteres con números

3. Prefijos

Ejemplo 1: – Quiero mostrar el monto de las ventas que termina con un signo% y precedido por un signo $.

Formato de proceso;
Imagen New_fmt low-High = ‘000000%’ (Prefijo = ‘$’);

Correr;
Datos de impresión de proceso = Ventas;
Formato Salesamount New_fmt .;
Correr;

Producción:

16_proc_format_sas-4904837

Ejemplo 2: – Digamos, tengo un número de teléfono de 10 dígitos y quiero mostrarlo como 123-3456-789.

Teléfono de datos;
Contacto de entrada;
líneas de datos;
1111111111
222222222
3333333333
;
Correr;
Formato de proceso;
Imagen Tele baja-alta = ‘000-0000-000 ′;
Correr;
Proc print data = Teléfono;
Formato Contacto Tele .;
Correr;

17_proc_format_sas-2596746

Notas finales: –

En este artículo, analizamos varios métodos para mostrar el formato de los valores de datos utilizando formatos integrados y definidos por el usuario. También hemos analizado varias técnicas para definir formatos como rangos, imágenes, manejar valores perdidos y valores no coincidentes usando OTROS. También hemos discutido la técnica de fusión eficiente usando PROC FORMAT. Esto debería ser todo lo que necesita para ser un profesional con los formatos SAS.

No hemos cubierto In-format al leer un conjunto de datos no estándar. Hablaremos de eso en una de nuestras publicaciones futuras.

¿Espero que este artículo le haya resultado útil? Hemos simplificado este tema y hemos intentado presentarlo de una manera muy sencilla y lúcida. Si necesita más ayuda con el formato SAS, no dude en hacer sus preguntas a través de los comentarios a continuación.

Si le gusta lo que acaba de leer y desea continuar con su aprendizaje sobre análisis, suscríbete a nuestros correos electrónicos, Síguenos en Twitter o como nuestro pagina de Facebook.