Format SAS PROC | Format prédéfini et défini par l'utilisateur dans SAS

Contenu

J'ai passé une partie importante de ma carrière en tant que spécialiste de la visualisation de données. Je suis très pointilleux sur le formatage et les rapports. Ensuite, quand j'ai commencé à utiliser SAS, a rencontré des difficultés lors du changement de format de nombre et de caractère, surtout quand il s'agit de rendez-vous. Sans surprise, Kunal et moi recevons un bon nombre de demandes de renseignements sur ce sujet..

Et SAS, il existe plusieurs options pour améliorer la présentation des rapports. Dans cet article, nous aborderons notamment les méthodes pour jouer avec le format des valeurs de données. Il est à noter que ces modifications ne s'appliquent que pendant l'affichage des résultats. Changer le format de sortie ne change pas la forme, les données sont stockées sur le backend.

Par défaut, SAS fournit plusieurs formats intégrés pour gérer divers formats, mais ils ne suffisent pas pour répondre aux exigences personnalisées que vos données peuvent avoir. Par exemple, nous avons peut-être codé Homme et Femme comme M et F (O 0 Oui 1), mais lors de l'impression, nous aimerions afficher le champ en tant que MALE et FEMALE uniquement. Un autre exemple courant est l'affichage des indicatifs régionaux sur les numéros de téléphone de 10 chiffres (par exemple, 123-3456-789).

PD: C'est un long article par rapport à ce que j'écris habituellement, alors n'hésitez pas à le digérer en morceaux.

L'article est divisé en 2 pièces générales: Premier, nous comprenons les formats prédéfinis et les formats définis par l'utilisateur dans SAS. Ensuite, nous analysons diverses applications et exemples de ces concepts.

1_proc_format_sas-6665279

Formats SAS intégrés

Ensuite, des exemples de données sont affichés contenant des détails sur les performances de l'agent. Nous utiliserons cet ensemble de données dans des exemples et des discussions dans cet article. Ici le DOJ est au format numérique, tel que défini par SAS par défaut, à partir du 1 de janvier de 1960.

2_proc_format_data-2295727Regardons d'abord la syntaxe de l'instruction FORMAT: –

Syntaxe: – FORMAT Format variable (s);

Faisons quelques exercices avec la déclaration de format:

Exemple 1: Afficher le DOJ au format JJMMAAAA:

Code:

Traiter les données d'impression = Ventes;
Formater la date du MJ 9. ;
Courir;

Production:

3_proc_format-6128743

Voici la liste des formats de date prédéfinis disponibles pour changer le format de sortie des variables:

4_proc_format-5452091

Exemple 2: afficher le montant des ventes en dollars avec une décimale

Code:

Traiter les données d'impression = Ventes;
Format du montant de vente 9.1 dollars;
Courir;

Production:

5_proc_format_sas-1402548

Liste des formats de date prédéfinis disponibles pour modifier le format de sortie des variables:

6_proc_format_sas1-3504838

Exemple 3: Afficher le montant des ventes en dollars avec deux décimales avec des virgules et DOJ au format Weekdate.

Code:

Traiter les données d'impression = Ventes;
Format Montant des ventes Dollar12,2 DOJ WEEKDATE .;
Courir;

Production:

7_proc_format_sas-2681156

Besoin de formats définis par l'utilisateur:

Jusqu'à présent, nous avons vu comment modifier le format des nombres et des dates avec les formats SAS intégrés. Mais il peut arriver que les formats intégrés de SAS ne répondent pas à nos besoins.. Comme dans le jeu de données actuel, nous voulons:

  1. Spectacles “MASCULIN” Oui “FÉMININ” au lieu de “M” Oui “F”
  2. Redéfinir les catégories A, B, C, D et E comme Ultra, super, Moyenne, Faible y Faible
  3. Affiche la fréquence du montant des ventes dans trois catégories ” = 12000″

Toutes ces choses peuvent être faites avec la transmission de données (o PROC SQL) avec l'instruction If-Else (ou changer de casse), mais il faudra une nouvelle variable qui stockera ces valeurs formatées. Tandis que, si on veut seulement changer l'affichage (et non les valeurs dans l'ensemble de données), la création d'un format défini par l'utilisateur à l'aide de PROC FORMAT est donc un moyen plus efficace d'effectuer ces modifications.

Formats définis par l'utilisateur à l'aide de Proc FORMAT

PROC FORMAT est une procédure qui crée un mappage de valeurs de données sur des étiquettes de données. Le mappage FORMAT défini par l'utilisateur est indépendant d'un ENSEMBLE DE DONNÉES SAS et de variables et doit être explicitement affecté dans un DATASTEP et / le PROC suivant.

Syntaxe de PROC FORMAT: –

8_proc_format_sas-8064107

Règles de définition du FORMAT NAME:
  1. Pour les valeurs de caractère, le premier caractère doit être un signe dollar ($) et une lettre ou un trait de soulignement comme deuxième caractère. Pour les valeurs numériques, le nom doit avoir une lettre ou un trait de soulignement comme premier caractère
  2. Le nom ne peut pas se terminer par un chiffre
  3. Ne peut pas être le nom d'un format SAS existant
  4. Il ne doit pas se terminer par un point dans l'instruction VALUE

Résolvons les problèmes évoqués ci-dessus en utilisant le format PROC:

Problème 1 (Oui 2): Afficher M et F comme Homme et Femme.

Code:

Format de processus;
Valeur $ Sexefmt 'M’ = 'Homme’
'F’ = 'Femme';
Courir;
Traiter les données d'impression = Ventes;
Format de genre $ Sexefmt. ;
Courir;

Production:

9_proc_format_sas-4009602de la même manière, nous pouvons le résoudre pour le problème 2. Définir la catégorie A, B, C, D et E comme Ultra, super, Moyenne, Faible y Faible.

Problème 3: vous souhaitez afficher la fréquence Salesamount dans trois catégories ” = 12000″

Code:

Format proc;
Valor Salegrp bas-8000 = '<8000'
8000 – <12000 = '8000-12000'
12000-Alto = '> = 12000';
Courir;
Données de fréquence proc = Ventas;
Montant de vente Format Salegrp .;
Montant de vente Mesa;
Courir;

Production:

10_proc_format_sas-6560974

Dessus, J'ai utilisé des plages pour définir le format. Peut être utilisé pour les valeurs numériques et les caractères.

Les mots-clés spéciaux utilisés pour définir les plages sont: –

une) Les plages peuvent être plusieurs valeurs séparées par des virgules.

je) 'UNE', 'B', 'C’
ii) 22, 44, 67

b) Les plages peuvent inclure ou exclure des valeurs limites, basé sur l'utilisation de divers mots-clés comme:

je) 24 – 45: Comprend les valeurs de 24 une 45 comprenant 24 Oui 45.
ii) 24 <- 45: Comprend des valeurs entre 24 une 45 comprenant 45 et à l'exclusion 24.
iii) 24 – <45: Comprend des valeurs entre 24 une 45 comprenant 24 et à l'exclusion 45.
iv) 24 <- <45: Comprend des valeurs entre 24 une 45 à l'exclusion 24 Oui 45.

c) FAIBLE se réfère au nombre minimum disponible, ÉLEVÉ fait référence au nombre le plus élevé disponible et AUTRES inclut tous les nombres non spécifiés. D'autres incluent également des valeurs manquantes si elles ne sont pas spécifiées.

Quelques points importants / candidatures à considérer sur PROC FORMAT

  • Format PROC renvoie la valeur d'origine si nous n'avons pas inclus toutes les valeurs de données lors de la définition du format.

11_proc_format_sas-6398919

  • Nous pouvons créer plusieurs formats dans une seule instruction PROC FORMAT, spécifier plusieurs valeurs au format PROC

Code:

Format de processus;
Valor Salegrp bas-8000 = '<8000'
8000 – <12000 = '8000-12000'
12000-Alto = '> = 12000';
Valeur $ Sexefmt 'M’ = 'Homme’
'F’ = 'Femme';
Courir;
Traiter les données d'impression = Ventes;
Montant de vente Format Salegrp. Genre $ Sexefmt .;
Courir;

Production:

12_proc_format_sas-4219573

  • PAGROC FORMAT peut être utilisé pour créer des jointures de données efficaces

Au FORMAT PROC, nous avons le choix CNTLIN, qui nous permet de créer un format à partir d'un ensemble de données au lieu d'une instruction VALUE. Avant d'utiliser cette option, nous examinons d'abord les directives ci-dessous: –

une) L'ensemble de données d'entrée doit contenir trois variables requises par PROC FORMAT: DÉBUT, ÉTIQUETTE et NOM FMT.

b) Ici, START est le champ clé entre ces deux tables et doit être unique dans l'ensemble de données d'entrée (base de données, nous utilisons dans CNTLIN option).

c) La variable LABEL est la valeur que nous voulons attribuer à un autre ensemble de données.

ré) La variable FMTNAME est le nom du format et doit être passée entre guillemets simples.

e) Après avoir défini le format, nous pouvons utiliser la fonction put pour créer une variable dans l'ensemble de données en fonction du champ clé et du format que nous avons défini.

Exemple:

Disons que nous voulons mapper la date de naissance de l'agent à partir de l'ensemble de données Agent_DDN (Exemples de données) à l'ensemble de données précédent13_proc_format_sas-7383015

Ici, nous voulons créer un format basé sur Agent_DDN et l'appliquer à Ventes. Et Agent_DOB, nous considérerions AGT_ID (champ clé, entre les deux ensembles de données) como START, DOB comme étiquette et FMTNAME = '$ AGENT'. Maintenant, regardez les déclarations (ensuite).

Agent de données_DOB_Fmt;
Renommer AGT_ID = START;
Définir Agent_DOB;
Libellé = date de naissance;
FMTNAME = '$ AGENT';
Courir;
Format de processus CNTLIN = Agent_DOB_Fmt;
Courir;

14_proc_format_sas-9892599

Le code ci-dessus a généré un format à l'aide de l'ensemble de données Agent_DOB_Fmt, puis, pour le fusionner avec le jeu de données SALES, les étapes de données ont été écrites (ensuite).

Ventes de données_DOB;
Définir les ventes;
Date_naissance = Mettre (Eight_ID, $ Agent.);
Courir;

15_proc_format_sas-4787747

Limitation de PROC FORMAT en tant que fusion

C'est la meilleure méthode lorsque nous voulons fusionner une variable d'un autre ensemble de données, mais si nous voulons ajouter cinq ou plusieurs variables, alors nous devons répéter l'instruction PROC FORMAT autant de fois avec la fonction PUT multiple dans la passe de données. Ensuite, Je préfère utiliser MERGE ou PROC SQL dans de tels cas.

  • Nous pouvons enregistrer le format SAS défini par l'utilisateur pour une utilisation future.

Tous les formats SAS sont stockés dans un catalogue (collection de formats). Lorsque nous créons un format, est stocké dans le catalogue. Si nous ne spécifions pas le catalogue, SAS stocke les formats dans la bibliothèque WORK dans un catalogue appelé FORMATS. Comme les autres ensembles de données de la bibliothèque WORK, sont également retirés à la fin de la session.

À présent, pour enregistrer des formats définis par l'utilisateur, nous devons spécifier où stocker le catalogue et comment l'appeler. Ceci peut être réalisé en stockant les formats dans une bibliothèque autre que WORK.

Paso 1 En premier lieu, nous devons définir une bibliothèque (ici, j'utilise l'édition SAS University)

Syntaxe: – LIBNAME Library_Name “Chemin”
LIBNAME STATDATA “/ tapis / miscarpetas / ECSTAT0";

Sétape-2 Utilisez l'option bibliothèque au format PROC et fournissez un nom de bibliothèque avec le nom du fichier de format. Le nom de fichier doit être un nom d'ensemble de données SAS valide.

Syntaxe: – BIBLIOTHÈQUE DE FORMAT PROC = Library_Name.MYFILENAME;
Bibliothèque de formats de processus = STATDATA.Gender_Fmt;
Valeur $ Sexefmt 'M’ = 'Homme’
'F’ = 'Femme';
Courir;

Au-dessus du programmeam a créé un fichier appelé Gender_Fmt.sas7bcat dans votre répertoire.

À présent, chaque fois que nous voulons utiliser un format stocké, nous devons dire à SAS de rechercher des formats dans ce fichier de catalogue. Cela se fait avec le recherche fmt option. Ensuite, avant de l'utiliser, nous devons écrire une déclaration.

Syntaxe: – Options fmtsearch = (Library_Name.MYFILENAME)
Options fmtsearch = (STATDATA.Gender_Fmt); / * Après cela, nous pouvons utiliser Gender_Fmt * /
Données d'impression proc = Ventas;
Format de genre $ Sexefmt .;
Courir;

Le format d'image SAS crée des modèles dans lesquels nous définissons comment les nombres sont affichés. Avec l'utilisation du FORMAT D'IMAGE, nous pouvons surmonter plusieurs problèmes d'affichage de nombres comme: –

1. Placer des décimales et des virgules

2. Intégrer des caractères avec des nombres

3. Préfixes

Exemple 1: – Je veux afficher le montant des ventes qui se termine par un signe % et précédé d'un signe $.

Format de processus;
Imagen New_fmt bas-élevé = ‘000000%’ (Préfixe = '$');

Courir;
Traiter les données d'impression = Ventes;
Montant de vente format New_fmt .;
Courir;

Production:

16_proc_format_sas-4904837

Exemple 2: – Disons, j'ai un numéro de téléphone pour 10 chiffres et je veux l'afficher comme 123-3456-789.

Téléphone de données;
Contact d'entrée;
lignes de données;
1111111111
222222222
3333333333
;
Courir;
Format de processus;
Image basse-haute télé = ‘000-0000-000 ??;
Courir;
Données d'impression proc = Téléphone;
Format de contact télé .;
Courir;

17_proc_format_sas-2596746

Remarques finales: –

Dans cet article, nous avons discuté de diverses méthodes pour afficher le format des valeurs de données à l'aide de formats intégrés et définis par l'utilisateur. Nous avons également analysé diverses techniques pour définir des formats sous forme de plages, images, gérer les valeurs manquantes et les valeurs non concordantes à l'aide de OTHERS. Nous avons également discuté de la technique de fusion efficace en utilisant PROC FORMAT. Cela devrait être tout ce dont vous avez besoin pour être un professionnel avec les formats SAS.

Nous n'avons pas couvert In-format lors de la lecture d'un ensemble de données non standard. Nous en parlerons dans un de nos prochains articles..

J'espère que cet article vous a été utile? Nous avons simplifié ce sujet et avons essayé de le présenter de manière très simple et lucide. Si vous avez besoin de plus d'aide avec le format SAS, n'hésitez pas à poser vos questions via les commentaires ci-dessous.

Si vous aimez ce que vous venez de lire et souhaitez continuer à apprendre sur l'analyse, abonnez-vous à nos e-mails, Suivez-nous sur Twitter ou comme le nôtre page le Facebook.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.