Précédent   Forum du club des développeurs et IT Pro > Logiciels > Solutions d'entreprise > Business Intelligence > SAS > SAS Base
SAS Base Forum d'entraide sur SAS base : étape data, procédures non statistiques, procédures non graphiques, SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 18/01/2013, 21h43   #1
Vincetouch
Membre à l'essai
 
Homme
'je ne suis qu'un stagiaire' ^^
Inscription : janvier 2013
Messages : 34
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Morbihan (Bretagne)

Informations professionnelles :
Activité : 'je ne suis qu'un stagiaire' ^^
Secteur : Santé

Informations forums :
Inscription : janvier 2013
Messages : 34
Points : 23
Points : 23
Par défaut Réaliser un MERGE sur 2 tables de données

Bonjour,

Et oui, comme beaucoup, je débute sur SAS et je bloque. Me voici donc pour vous demander SVP votre aide.

Je pense avoir la bonne utilisation du merge dans une étape DATA (et j'ai aussi essayé par une PROC SQL) mais voilà je n'arrive pas à obtenir une table sas contenant les valeurs de mes 2 tables initiales.

Il s'agit d'un merge MANY to ONE
Voici ce que j'ai :
projet.donnees2 (20variables) + projet.Me2 (2variables)
avec pour variable commune :
ModeEntree (var character $3. dans les 2 tables initiales)BUT : création d'une nouvelle table projet.donnees3

Voici le code essayé :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
PROC SORT DATA = projet.donnees2 ; 
	BY ModeEntree ;
RUN ;
PROC SORT DATA = projet.Me2 ; 
	BY ModeEntree ;
RUN ;
DATA projet.donnees3 /*(DROP = modeentree)*/ ;
	MERGE projet.donnees2 (IN = donnee)  
        projet.Me2 (IN = mode)
	;
	BY ModeEntree  ;
	IF  donnee AND mode THEN OUTPUT ;
RUN ;
j'ai essayé aussi :
Code :
1
2
3
4
5
6
7
 
PROC SQL ;
   CREATE TABLE projet.donnees3 AS
     SELECT *
     FROM projet.Me2, projet.donnees2 
     WHERE donnees2.ModeEntree = Me2.ModeEntree ;
QUIT ;
Voilà, SAS ne veut pas me faire la jointure et faire correspondre ces 2 tables par la variable commune...

Merci par avance! Si je n'ai pas été assez clair, je réponderai à vos questions.
Vincetouch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2013, 16h55   #2
datametric
Rédacteur
 
Homme Stéphane Colas
Consultant et formateur SAS et Cognos
Inscription : avril 2009
Messages : 2 314
Détails du profil
Informations personnelles :
Nom : Homme Stéphane Colas
Âge : 40
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Consultant et formateur SAS et Cognos
Secteur : Conseil

Informations forums :
Inscription : avril 2009
Messages : 2 314
Points : 5 576
Points : 5 576
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
PROC SORT DATA = projet.donnees2 ; 
BY ModeEntree ;
RUN ;
PROC SORT DATA = projet.Me2 ; 
BY ModeEntree ;
RUN ;
DATA projet.donnees3 /*(DROP = modeentree)*/ ;
MERGE projet.donnees2 (IN = donnee) 
projet.Me2 (IN = mode)
;
BY ModeEntree ;
IF donnee AND mode THEN OUTPUT ;
RUN ;
contient IF donnee and mode THEN OUTPUT ; alors que ce serait plutôt IF donnee ;

Ensuite, vérifie bien que si tu as des champs caractères, ils n'ont pas des blancs qui pourraient perturber le merge.
__________________
N'oubliez pas de cliquer sur lorsque votre problème est réglé !

Moteur de recherche dans les papiers SAS
datametric est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 21/01/2013, 13h06   #3
Vincetouch
Membre à l'essai
 
Homme
'je ne suis qu'un stagiaire' ^^
Inscription : janvier 2013
Messages : 34
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Morbihan (Bretagne)

Informations professionnelles :
Activité : 'je ne suis qu'un stagiaire' ^^
Secteur : Santé

Informations forums :
Inscription : janvier 2013
Messages : 34
Points : 23
Points : 23
En faite mon problème venait lors du changement de format de la variable commune dans les 2 tables initiales avant le merge.
Il fallait créer la nouvelle variable avec le bon format dans une table différente...

merci de la réponse rapide en tout cas^^
Vincetouch est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 23h39.


 
 
 
 
Partenaires

Hébergement Web