Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Macro
Macro Forum d'entraide sur le langage Macro de SAS
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/06/2008, 16h09   #1
Futur Membre du Club
 
Inscription : mai 2008
Messages : 101
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 101
Points : 19
Points : 19
Par défaut une variable vide crée en plus dans le résultat sas



je suis en train de construire une table, en utilisant des proc sql pour réccupérer les valeurs des champs et ensuite les attribuer à chaque variable comme suit:



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
proc sql noprint ;
	  SELECT IDjdd INTO:id
               FROM &DATA;
	  SELECT prob INTO:Prob_vrai 
	  FROM table_vrai;
               SELECT F INTO:F_vrai
	  FROM table_vrai;
               SELECT prob INTO:Prob_ech 
	  FROM table_ech;
	  SELECT F INTO:F_ech
	  FROM table_ech;
               quit;
 
    	  DATA resum; 
               var1=&id;
               var2=%scan(&var,&d,' ');
	  var3=&nbr;
               var4=&F_vrai;
               var5=&Prob_vrai;
               var6=%eval(%eval(&nbr)-%eval(&ind));
               var7=∼
               var8=&F_ech;
	  var9=&Prob_ech;
	   run;

je m'apperçoit qu'à la fin dans la table créee "resum", une colonne (variable I) vide en plus!! j'ai utilsé l'option mlogic pour l'execution pas à pas, j'ai regardé mon code source plusieurs fois, mais je n'arrive pas à détecter l'erreur!!
nostress est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 16h19   #2
Membre Expert
 
Inscription : mars 2005
Messages : 1 028
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 028
Points : 1 278
Points : 1 278
Envoyer un message via Yahoo à bahraoui
Je crois qu'il y a un problème sur des variable non définit: &d &var...
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
DATA t;
input a b;
cards;
3 4
;
run;
proc sql ;
SELECT a INTO: v_a
FROM t;
SELECT b INTO: v_b
FROM t;
quit;
%put &v_a;
DATA t1;
x=&v_a;
res=%eval(%eval(&v_a)-%eval(&v_b));
run;
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 16h28   #3
Futur Membre du Club
 
Inscription : mai 2008
Messages : 101
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 101
Points : 19
Points : 19
non!!

mais mon code marche bien, toutes les variables sont bien calculées et reportées dans la table "résum", sauf qu'il rajoute une colonne I vide en plus!!
nostress est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 16h54   #4
Responsable SAS
 
Inscription : septembre 2006
Messages : 1 973
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 1 973
Points : 4 810
Points : 4 810
Bonjour,
Où définis-tu tes macro-variables dans ton code?
Code :
%LEt maVar=valeurMaVar;
fafabzh6 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 17h02   #5
Futur Membre du Club
 
Inscription : mai 2008
Messages : 101
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 101
Points : 19
Points : 19
Citation:
Envoyé par fafabzh6 Voir le message
Bonjour,
Où définis-tu tes macro-variables dans ton code?
Code :
%LEt maVar=valeurMaVar;
Je crois que j'ai trouvé le problème. Je réccupère la valeur F de la statistique de Fisher dans var8 et un certain moment elle n'est pas définie, donc "F=. ", à partir de cette valeur il rajoute une colonne vide.

je voudrai remplacer cette valeur par un 0, et j'ai applique ce code:
Code :
DATA table_ech;SET table_ech;IF F='.' then F=0;run;
mais ça ne marche pas!!!
nostress est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2008, 17h43   #6
Membre Expert
 
Inscription : mars 2005
Messages : 1 028
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 1 028
Points : 1 278
Points : 1 278
Envoyer un message via Yahoo à bahraoui
Je crois que c'est un probleme de test
Code :
DATA table_ech;SET table_ech;IF F='.' then F=0;run;
F est de type numérique ou caractère?
Si numérique :
Code :
DATA table_ech;SET table_ech;IF F=. then F=0;run;
bahraoui est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 09h27   #7
Futur Membre du Club
 
Inscription : mai 2008
Messages : 101
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 101
Points : 19
Points : 19
Citation:
Envoyé par bahraoui Voir le message
Je crois que c'est un probleme de test
Code :
DATA table_ech;SET table_ech;IF F='.' then F=0;run;
F est de type numérique ou caractère?
Si numérique :
Code :
DATA table_ech;SET table_ech;IF F=. then F=0;run;
Bonjour

je repris mon code ce matin en changeant:
Code :
DATA table_ech;SET table_ech;IF F=. then F=0;run;
et ça ne marche pas non plus,

décidement
nostress est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/06/2008, 11h57   #8
Membre confirmé
 
Inscription : avril 2008
Messages : 233
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : avril 2008
Messages : 233
Points : 216
Points : 216
Tu peux mettre ici le code permettant de reproduire l'anomalie ? Le code complet, à partir de cards pour remplir les tables que tu utilises.


P.S. Vu le nom de la colonne, je dirais qu'il y a une boucle quelque part avec une variable i dedans...
green_fr est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h26.


 
 
 
 
Partenaires

Hébergement Web