Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > Débutez
Débutez Forum concentrant les premières questions que l'on se pose en tant que débutant
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 23/05/2011, 19h17   #1
Membre à l'essai
 
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 20
Points : 20
Par défaut Gestion de labels

Bonjour,
J ai un jeu de donné et je m occupe des 2 label qui son composé de + et -
le 3 eme label est le label sujet qui ne bouge pas
je veux creer une table ou je garde le label sujet
et qd les 2 label j ai + et + dans ma nouvel variable ce ecrit un message
- et+ un autre message
- et - un autre message
+ et - un autre message
J'ai tapé le code suivant :
Code :
1
2
3
4
5
6
7
8
DATA newvariable;
SET anciennevariable (keep=sujet colone A  colone B);
IF colonne A =- AND colonne B=+ then newvariable= "az";
IF colonne A =+ AND colonne B=+ then newvariable= "aze";
IF colonne A =- AND colonne B =- then newvariable= " azer";
IF colonne A =+ AND colonne B=- then newvariable= " azerty";
 
run;
qd je fait tourner ce code j ai plein d'erreurs.

voila les erreur
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
504  DATA Protection;
505  SET mylib.souche (keep=SUB_ID Seroprotection seroconversion);
ERROR: The variable Seroprotection IN the DROP, KEEP, OR RENAME list has never been referenced.
ERROR: The variable seroconversion IN the DROP, KEEP, OR RENAME list has never been referenced.
506  IF Seroprotection =- AND seroconversion =+ then protection="Serocprotected";
                              --------------         ----------
                              22                     22
507  IF Seroprotection =+ AND seronconversion =+ then protection="Seroconverted";
                              ---------------         ----------
                              22                      22
508  IF Seroprotection =- AND seroconversion =- then protection= " No effect";
                              --------------         ----------
                              22                     22
509  IF Seroprotection =+ AND seroconversion =- then protection= " ";
                              --------------         ----------
                              22                     22
ERROR 22-322: Syntax error, expecting one of the following: !, !!, &, (, *, **, +, -, /, ;, <,
              <=, <>, =, >, ><, >=, AND, EQ, GE, GT, IN, LE, LT, MAX, MIN, NE, NG, NL, NOTIN,
              OR, [, ^=, {, |, ||, ~=.
 
510  DROP Seroprotection seroconversion;
511  run;
asty69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 19h38   #2
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
essaye avec ce type de syntaxe

Code :
IF (Seroprotection ="-") AND (seroconversion ="+")
ou
Code :
IF (Seroprotection IN ("-")) AND (seroconversion IN ("+"))
Manoutz est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/05/2011, 19h45   #3
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Astycot,
Le minimum c'est de savoir quel est le type de la variable que tu manipules, et on te l'a dit depuis le début (problème similaire : where var= "<10" que t'as eu au tout début). Quand on voit ça :, on a l'impression d'avancer en reculant Un conseil, révise les bases...
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 19h54   #4
Membre Expert
 
Homme
Biostatisticien
Inscription : juin 2009
Messages : 1 143
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Irlande

Informations professionnelles :
Activité : Biostatisticien
Secteur : Industrie Pharmaceutique

Informations forums :
Inscription : juin 2009
Messages : 1 143
Points : 1 760
Points : 1 760
oula mollo brice, mademoiselle débute apparemment! On est tous passé par la Par contre oui, c'est particulièrement le moment pour se creuser a tête! ( et oui, il faut en théorie connaître le type de la variable - cela peut se savoir via une proc content par exemple - mais de mon expérience terrain des données sero je n'ai jamais rencontré du numérique.. On trouve un peu du tout et n'importe quoi dans ces données, donc en général on passe directement en alpha)
Manoutz est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/05/2011, 20h17   #5
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
C'est pas méchant Manoutz, ce qu'il fait est beaucoup plus complexe que les erreurs qu'il rencontre (type de variables). Et si on s’appuie sur la log, on saura d’où vient le problème.
No soucis !
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 08h59   #6
Membre à l'essai
 
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 20
Points : 20
Citation:
Envoyé par Manoutz Voir le message
oula mollo brice, mademoiselle débute apparemment! On est tous passé par la Par contre oui, c'est particulièrement le moment pour se creuser a tête! ( et oui, il faut en théorie connaître le type de la variable - cela peut se savoir via une proc content par exemple - mais de mon expérience terrain des données sero je n'ai jamais rencontré du numérique.. On trouve un peu du tout et n'importe quoi dans ces données, donc en général on passe directement en alpha)


Je dois definir si le signe "-" ou "+" est numeric ou alpha?
asty69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 09h17   #7
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 006
Points : 1 703
Points : 1 703
hello,
c'est normal que SAS t'affiche cette erreur , parce que t'as mis drop et keep les mêmes variables ( c à d SAS ne sais pas ce que tu veux faire et moi non plus d'ailleurs ).
l'eereu est ici. Tu enléve le drop ou le keep. à toi de voir selon ce que tu veux faire /obtenir
Code :
1
2
3
4
5
 
 
/*Protection*/   
 (keep=SUB_ID Seroprotection Seroconversion);
DROP Seroprotection Seroconversion;
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 09h43   #8
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 006
Points : 1 703
Points : 1 703
Oups! asty69 t'as modifié ton message !!
je vais quand même te répondre sur ta question,
Sous SAS il existe deux types de valeurs : numérique et caractère.

Pour savoir de quel type ai ta variable, c'est simple pour un débutant d'ouvrir la table et de cliquer sur la colonne.

Sinon : une proc contents ou une proc sql peut nous renseigner sur le contenue de la table ainsi que le type ,

Exemple en proc sql ;

Code :
1
2
3
4
 
proc sql ;
DESCRIBE TABLE sashelp.class ;
quit;
Regardes ta log pour le résultat.
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 09h53   #9
Membre Expert
 
Avatar de MEGAMIND2
 
Homme Brice Beare
Paris
Inscription : janvier 2011
Messages : 956
Détails du profil
Informations personnelles :
Nom : Homme Brice Beare
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Paris

Informations forums :
Inscription : janvier 2011
Messages : 956
Points : 1 366
Points : 1 366
Citation:
Envoyé par asty69 Voir le message
* Bonjour, *

Code :
1
2
3
4
5
6
7
8
DATA newvariable;
SET anciennevariable (keep=sujet colone A  colone B);
IF colonne A =- AND colonne B=+ then newvariable= "az";
IF colonne A =+ AND colonne B=+ then newvariable= "aze";
IF colonne A =- AND colonne B =- then newvariable= " azer";
IF colonne A =+ AND colonne B=- then newvariable= " azerty";
 
run;
qd je fait tourner ce code j ai plein d'erreurs.

* Merci *
Une variable SAS n'accepte pas des espaces (colonne A )
Si Asty avait constitué sa variables comme suit
Code :
1
2
IF D21 <40 OR D21 =. THEN Seroconversion="-";
else Seroconversion="+";
Donc s'il veut réutiliser cette variable, logiquement il mettra des quotes

Code :
IF Seroconversion="+" THEN ...;
Dans ce cas, on a pas besoin de chercher sur Google pour se convaincre que + est du alphanumérique.

Et comme l'a dit Sam je ne vois pas l'interet de détruire quelque chose qu'on a construit
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 09h58   #10
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 006
Points : 1 703
Points : 1 703
@brice, je crois qu'on recule car moi je ne parlais de ce code que asty a posté.

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
25
26
27
28
 
 DATA Seroprotection;
SET mylib.SOUCHE ( keep=D0 D21 SUB_ID);
IF D21 <40 OR D21 =. THEN Seroprotection="-";
else Seroprotection="+";
DROP D0 D21 ;
Run;
 
/*seroconversion*/
DATA Seroconversion ( keep=D0 D21 SUB_ID);
SET mylib.SOUCHE;
A="-";
IF (D0 ne . AND D21 ne .) AND ((D0>=10 AND D0/D21>=4) OR (D0<10 AND D21>=40))
then A="+";
run;
DATA mylib.SOUCHE ;
	MERGE mylib.SOUCHE BMI Sequence Seroconversion Seroprotection;
	BY SUB_ID;
RUN;
/*Protection*/
DATA Protection;
SET mylib.souche (keep=SUB_ID Seroprotection Seroconversion);
IF (Seroprotection ="-") AND (Seroconversion ="+")then protection="Seroprotected";
IF (Seroprotection ="+") AND (Seroconversion ="+")then protection="Seroconverted";
IF (Seroprotection ="-") AND (Seroconversion ="-") then protection= " No effect";
IF (Seroprotection ="-") AND (Seroconversion ="-") then protection= " ";
DROP Seroprotection Seroconversion;
run;
puis de cette citation:

Je dois definir si le signe "-" ou "+" est numeric ou alpha?
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 10h12   #11
Membre à l'essai
 
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 20
Points : 20
Par défaut Merci

j'avais réglé le problème depuis hier soir, mais je voulais absolument connaitre mes erreurs pour ne pas les renouveler

d ou non on recule pas tout ce que vous dite me permet d avancer

merci encore une fois.

j ai mis pour que le "prochain debutant "puisse reperer ce qui ma aider et servit
asty69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 10h15   #12
Membre à l'essai
 
Inscription : novembre 2009
Messages : 107
Détails du profil
Informations forums :
Inscription : novembre 2009
Messages : 107
Points : 20
Points : 20
Citation:
Envoyé par MEGAMIND2 Voir le message

Et comme l'a dit Sam je ne vois pas l'interet de détruire quelque chose qu'on a construit
en faite j ai pas reellement detruit j ai contruit variable par variable d apres les autre variable et ensuite j ai tout mergé
asty69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 10h16   #13
Modérateur
 
Homme Samir SELMANE
Consultant en Business Intelligence
Inscription : février 2011
Messages : 1 006
Détails du profil
Informations personnelles :
Nom : Homme Samir SELMANE
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence
Secteur : Conseil

Informations forums :
Inscription : février 2011
Messages : 1 006
Points : 1 703
Points : 1 703
Bravo
s_a_m est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h59.


 
 
 
 
Partenaires

Hébergement Web