Recherche…


Introduction

Informats et formats sont utilisés pour indiquer à SAS comment lire et écrire les données respectivement. Les informats sont couramment utilisés dans un datastep lors de la lecture de données à partir d'un fichier externe. Les informats sont rarement utilisés dans les PROC. Les formats sont couramment utilisés dans les étapes de données et les processus.

Remarques

Les formats SAS convertissent les valeurs numériques ou de caractères en valeurs de caractère. Un format peut être appliqué à l'aide d'un format ou d'une instruction put , ce qui modifie l'affichage d'une valeur ou utilise la fonction put pour stocker la valeur mise en forme dans une nouvelle variable.


Il existe quatre catégories de formats:

  • Caractère: indique à SAS d'écrire les valeurs de données de caractère à partir des variables de caractère.
  • Date et heure - indique à SAS d'écrire des valeurs de données à partir de variables représentant des dates, des heures et des dates.
  • ISO 8601 - demande à SAS d'écrire les valeurs de date, d'heure et de date / heure en utilisant la norme ISO 8601.
  • Numérique - indique à SAS d'écrire des valeurs de données numériques à partir de variables numériques.

Les formats prennent généralement la forme <formatname><w>.<d>; , w étant la largeur (y compris les décimales et le point), d étant le nombre de décimales.


Formats de date courants (appliqués aux valeurs de date SAS):

  • date9. par exemple 02AUG2016
  • ddmmyyn8. par exemple 02082016
  • ddmmyy8. par exemple 02/08/16
  • yymmdd10. par exemple 20160802
  • year4. par exemple 2016

Formats numériques communs (appliqués aux nombres):

  • comma11.0 eg comma11.0
  • comma12.2 eg comma12.2
  • dollar11.2 par exemple 5 789,12 $
  • nlmnlgbp11.2 par exemple £ 2,468.02

Autres formats:

  • $hex8. , convertir une chaîne en hexadécimal
  • $upcase. , convertir une chaîne en majuscule
  • $quote. , mettez une chaîne entre guillemets

Une liste complète des formats peut être trouvée ici> https://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a001263753.htm

Utiliser la déclaration de format

L'instruction de format applique le format donné à la variable spécifiée à des fins d'affichage uniquement , c'est-à-dire que la valeur sous-jacente ne change pas.

data example1 ;
  Date  = '02AUG2016'd ; /* stored as a SAS date, i.e. a number */
  Date2 = '31AUG2016'd ;
  format Date monyy7. Date2 yymmddn8. ;
run ;
Rendez-vous amoureux Date2
AUG2016 20160831

Utilisation de l'instruction de format pour grouper des données

Vous pouvez appliquer des formats dans une procédure, par exemple pour modifier les regroupements dans un proc summary proc freq ou une proc summary proc freq .


Grouper les dates 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 ;
Rendez-vous amoureux Journées
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 ;
Rendez-vous amoureux Journées
JUN2016 30
JUL2016 31
AUG2016 31

L'avantage d'utiliser un format est que l'ordre de tri naturel est conservé.


En utilisant sashelp.class comme exemple, dites que vous vouliez comparer la fréquence de la première lettre de chaque nom. Vous pouvez utiliser la fonction substr() pour trouver la première lettre et exécuter un programme proc freq sur la nouvelle variable. Alternativement, vous pouvez appliquer le $1. format à la variable Name :

proc freq data=sashelp.class ;
  table Name ;
  format Name $1. ;
run ;
prénom COMPTER
UNE 7
B 4
C 2
etc.

Formats personnalisés

Les formats personnalisés, également appelés formats définis par l'utilisateur, peuvent être créés et utilisés comme tous les autres formats par défaut.

/*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 sera imprimée selon le nouveau format. Par exemple, la valeur 'CA' sera imprimée en tant que 'California' . Si une valeur n'a pas été formatée, telle que 'CT' , cette valeur sera imprimée telle qu'elle apparaît dans le jeu de données.

Utiliser des informats pour lire des données

Les informats sont utilisés pour indiquer à SAS comment lire les données et sont identifiés par une déclaration informat .

data test;
 infile test.csv;
 informat     id $6.
              date mmddyy10.
              cost comma10.2
 ;
 input @1 id
       @7 date
       @20 cost
 ;
run; 

Informats et Formats peuvent également être utilisés ensemble pour lire les données et les écrire dans un format différent, par exemple avec la variable de salaire ci-dessous:

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow