Modification champs caractères en numérique avec des formats
Bonjour à tous,
J'ai a ma disposition un ensemble de tables SAS où mes données sont en caractères (ex : Yes / No)
On me demande de fournir cette même base avec des données numériques et de donner les formats associés (donc 0 et 1 et les formats Yes et No)
Aujourd'hui avec mes connaissances en SAS,j'ai crée un catalogue de format et pour chacune de mes tables les manipulations suivantes :
1 - Création d'une nouvelle variable où mes Yes sont égaux à 1 et mes No égaux à 0.
2 - J'y applique mon format
3 - Je fais une proc sql pour remettre mes variables dans le bon ordre en supprimant mes variables caractères
J'ai une trentaine de tables avec en moyenne 20 variables a recoder.
Je dois bien sûr (sinon ce serait trop simple) garder le nom des variables originels
Est-ce la bonne solution ou existe - t-il un moyen plus rapide ?
Merci d'avance de vos retours
Modification champs caractères en numérique avec des formats
Bonjour,
Vous n'indiquez pas de quelle façon vous créez vos nouvelles variables. Il peut être utile de créer un informat mais vous devrez toujours réorganiser l'ordre des variables. Vous pouvez aussi créer une macro :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| proc format;
invalue yesno
"No" = 0
"Yes" = 1;
value yesno
0 = "No"
1 = "Yes";
run;
data test;
input V1:$3. V2:$3. V3:8.;
cards;
Yes No 1
Yes No 2
No Yes 3
;
run; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| %macro recode(var,format);
_&var = input(&var,&format);
format _&var &format;
drop &var;
rename _&var=&var;
%mend;
data test;
set test;
%recode(V1,yesno.);
%recode(V2,yesno.);
run; |
Cordialement,