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
egcomma11.0
-
comma12.2
egcomma12.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;