Vous n'êtes pas identifié.
Bienvenue sur le site support de mes ouvrages d'introduction à SAS
La 4ème édition de mon ouvrage est toujours disponible !
encore une histoire tirée de faits réels...
de deux faits réels en fait...
Caroline m'a envoyé un fichier Excel avec lequel j'ai eu quelques difficultés et Ibrahima m'a contacté pour un problème qu'il rencontrait et qui avait aussi pour origine un fichier Excel.
Je vais concentrer les deux problèmes dans ce petit exercice...
Je dispose d'un classeur Excel avec lequel j'ai bien des misères....
ce fichier peut être téléchargé en cliquant sur ce lien
Comme je souhaite manipuler avec SAS les données contenues dans ce classeur, j'ai exécuté cette instruction :
libname test xlsx "c:/intro_sas/fichiers/maudit.xlsx";
évidemment, dans mon journal, tout semble bien aller :
2895 libname test xlsx "C:\intro_sas\fichiers\maudit.xlsx"; NOTE: Libref TEST was successfully assigned as follows: Engine: XLSX Physical Name: C:\Users\leo_l\Documents\poubelle\maudit.xlsx
premier problème
Le premier onglet contient deux variables : email et type. Je souhaite afficher l'observation relative à l'email client_B@quinexistepas.com.
cette adresse email existe, aucun doute à ce sujet (vous pourrez vérifier en ouvrant le classeur Excel).
j'exécute donc le programme suivant :
proc print data=test.feuil1; where email="client_B@quinexistepas.com"; run;
et je n'obtiens aucun résultat.... dans mon journal, j'ai ce message :
NOTE: Access by observation number not available. Observation numbers will be counted by PROC PRINT. NOTE: The import data set has 12 observations and 2 variables. NOTE: No observations were selected from data set TEST.feuil1. NOTE: There were 0 observations read from the data set TEST.feuil1. WHERE email='client_B@quinexistepas.com'; NOTE: PROCEDURE PRINT a utilisé (Durée totale du traitement) : real time 0.00 seconds cpu time 0.01 seconds
les deux premières notes ne doivent pas vous inquiéter, elles ne sont pas la cause de cette première difficulté...
vous ne me croyez pas ?
data maudit; set test.feuil1; run; proc print data=maudit; where email="client_B@quinexistepas.com"; run;
et vous n'aurez pas non plus de résultat.... pourtant, si vous remplacez = dans l'instruction WHERE par CONTAINS, vous obtenez bien un résultat...
proc print data=maudit; where email contains "client_B@quinexistepas.com"; run;
le résultat :
j'ai donc deux questions :
1- pourquoi ?
2- et comment corrige t'on le problème pour que le programme suivant fonctionne et donne le résultat escompté :
proc print data=maudit; where email="client_B@quinexistepas.com"; run;
second problème
pour des raisons qui n'appartiennent qu'à moi, j'ai besoin de créer un fichier TXT contenant les observations de la table maudite. J'ai donc rédigé ce programme (classique...) :
data _null_; set test.feuil1; file "C:\intro_sas\fichiers\maudit.txt"; put email @30 type ; run;
(j'ai indiqué un @30 dans mon instruction PUT parce que je souhaite créer un fichier TXT formaté colonne)
Mon journal m'indique que les choses semblent s'être bien passées :
2904 data _null_; 2905 set test.feuil1; 2906 file "C:\intro_sas\fichiers\maudit.txt"; 2907 put email @30 type ; 2908 run; NOTE: The file "C:\intro_sas\fichiers\maudit.txt" is: Nom du fichier=C:\intro_sas\fichiers\maudit.txt, RECFM=V,LRECL=32767, Taille de fichier (octets)=0, Modifié(e) le=17 novembre 2020 10 h 06, Heure de création=17 novembre 2020 10 h 06 NOTE: The import data set has 12 observations and 2 variables. NOTE: 12 records were written to the file "C:\intro_sas\fichiers\maudit.txt". The minimum record length was 30. The maximum record length was 42. NOTE: There were 12 observations read from the data set TEST.feuil1. NOTE: DATA statement a utilisé (Durée totale du traitement) : real time 0.02 seconds cpu time 0.00 seconds
et j'ouvre mon fichier TXT pour vérifier qu'effectivement, tout va bien :
client_A@quinexistepas.com super client client_B@quinexistepas.com client moyen client_C@quinexistepas.com client bon client_D@quinexistepas.com super client client_E@quinexistepas.com client moyen client_F@quinexistepas.com client bon client_G@quinexistepas.com super client client_H@quinexistepas.com client moyen client_I@quinexistepas.com client bon client_J@quinexistepas.com super client client_K@quinexistepas.com client moyen
fatalitas !
et j'ai deux nouvelles questions (identiques en fait aux deux précédentes...):
1- pourquoi ?
2- et comment corrige t'on je problème pour que mon programme fonctionne et donne le résultat escompté : un fichier TXT dans lequel chaque observation n'est présentée que sur une ligne
amusez vous bien
Ce sujet est maintenant archivé - seuls les utilisateurs inscrits de www.sas-sr.com peuvent consulter l'intégralité du sujet et les réponses aux questions posées.
pour vous identifier, suivez ce lien
pour vous inscrire, suivez ce lien
Hors ligne