Publié le :
ETL CREATION_INTERNE

Gestion de formats et transformation de données

Ce code est également disponible en : Deutsch English Español
En attente de validation
Le script est divisé en deux parties principales. La première définit un format numérique ('readdate') pour interpréter diverses représentations de dates. Ce format est ensuite appliqué dans une étape DATA pour convertir des chaînes de caractères de date brutes en dates SAS© numériques exploitables. Une option système 'yearcutoff' est également définie pour gérer l'ambiguïté des années à deux chiffres. Un PROC PRINT affiche le résultat de cette transformation. La seconde partie définit un autre format numérique ('typefmt') et plusieurs formats d'entrée de caractères (INVALUE : '$groupx', '$groupy', '$groupz') pour la catégorisation de réponses. Ces formats sont utilisés dans une deuxième étape DATA pour mapper des réponses textuelles brutes à des termes catégoriels standardisés.
Analyse des données

Type : CREATION_INTERNE


Toutes les données traitées dans ce script sont créées en interne via des blocs 'DATALINES' directement inclus dans le code SAS. Aucune source de données externe ni de bibliothèque SASHELP n'est utilisée pour l'entrée des données.

1 Bloc de code
PROC FORMAT
Explication :
Définit un format numérique nommé 'readdate'. Ce format mappe la valeur 1 au format de lecture 'date7.' (jour-mois-année à deux chiffres) et la valeur 2 au format 'mmddyy8.' (mois/jour/année à deux chiffres). Il est utilisé pour interpréter dynamiquement des chaînes de caractères en tant que dates SAS.
Copié !
1PROC FORMAT;
2 value readdate 1='date7.'
3 2='mmddyy8.';
4 RUN;
2 Bloc de code
OPTIONS
Explication :
Définit l'option système 'yearcutoff' à 1920. Cette option indique que toute année à deux chiffres inférieure à 'yearcutoff' (par exemple '00' à '19') sera considérée comme appartenant au 21e siècle (20xx), tandis que les années égales ou supérieures (par exemple '20' à '99') seront considérées comme appartenant au 20e siècle (19xx).
Copié !
1options yearcutoff=1920;
3 Bloc de code
DATA STEP Data
Explication :
Crée le jeu de données 'fixdates' en lisant des données brutes en ligne. La variable 'dateinformat' est créée en appliquant le format 'readdate' à la variable 'source', ce qui génère la chaîne du format de date approprié. Ensuite, la fonction 'INPUTN' utilise cette chaîne de format dynamique pour convertir la chaîne de caractères 'start' en une valeur de date SAS numérique ('newdate').
Copié !
1DATA fixdates;
2 LENGTH jobdesc $12;
3 INPUT SOURCE id lname $ jobdesc $ start $;
4 dateinformat=put(SOURCE, readdate.);
5 newdate = inputn(start, dateinformat);
6 DATALINES;
7 1 1604 Ziminski writer 09aug90
8 1 2010 Clavell editor 26jan95
9 2 1833 Rivera writer 10/25/92
10 2 2222 Barnes proofreader 3/26/98
11 ;
4 Bloc de code
PROC PRINT
Explication :
Affiche le contenu du jeu de données 'fixdates' nouvellement créé, permettant de vérifier la conversion des dates et la structure des données.
Copié !
1PROC PRINT;RUN;
5 Bloc de code
PROC FORMAT
Explication :
Définit un format numérique 'typefmt' qui mappe les valeurs 1, 2 et 3 à des noms de formats d'entrée de caractères spécifiques ('$groupx', '$groupy', '$groupz'). De plus, il définit trois formats d'entrée de caractères ('INVALUE') : '$groupx', '$groupy' et '$groupz'. Chacun de ces formats mappe les chaînes 'positive', 'negative' et 'neutral' à des termes catégoriels différents (par exemple, 'agree', 'accept', 'pass').
Copié !
1PROC FORMAT;
2 value typefmt 1='$groupx'
3 2='$groupy'
4 3='$groupz';
5 invalue $groupx 'positive'='agree'
6 'negative'='disagree'
7 'neutral'='notsure';
8 invalue $groupy 'positive'='accept'
9 'negative'='reject'
10 'neutral'='possible';
11 
12 invalue $groupz 'positive'='pass'
13 'negative'='fail'
14 'neutral'='retest';
15 RUN;
6 Bloc de code
DATA STEP Data
Explication :
Crée le jeu de données 'answers' en lisant des données brutes en ligne. La variable 'respinformat' est créée en appliquant le format 'typefmt' à la variable 'type', ce qui génère le nom du format d'entrée de caractères approprié (par exemple '$groupx'). Ensuite, la fonction 'INPUTC' utilise ce nom de format dynamique pour mapper la chaîne de caractères 'response' à une valeur catégorielle standardisée ('word').
Copié !
1DATA answers;
2 INPUT type response $;
3 respinformat = put(type, typefmt.);
4 word = inputc(response, respinformat);
5 DATALINES;
6 1 positive
7 1 negative
8 1 neutral
9 2 positive
10 2 negative
11 2 neutral
12 3 positive
13 3 negative
14 3 neutral
15 ;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.