Précédent   Forum des professionnels en informatique > 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 Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/05/2011, 11h24   #1
Invité régulier
 
Homme Thomas Delclite
Doctorant
Inscription : mai 2011
Messages : 15
Détails du profil
Informations personnelles :
Nom : Homme Thomas Delclite
Localisation : France

Informations professionnelles :
Activité : Doctorant
Secteur : Enseignement

Informations forums :
Inscription : mai 2011
Messages : 15
Points : 6
Points : 6
Par défaut Ajout de variables conditionnée à une autre variable

Bonjour à tous,

Je cherche à faire une fusion de deux tables, sous un forme (je pense) non prévu par Merge par exemple.
Je ne sais pas si une macro est nécessaire pour une telle commande. Si oui, je déplacerai le topic.

Je dispose de deux tables :
Table 1 :
ind ref info1 info2 ...
1 001 xxx1 yyy1
2 001 xxx2 yyy2
3 002 xxx3 yyy3
4 002 xxx4 yyy4
...

Table 2:
ref info3 info4 ...
001 zzz1 ttt1
002 zzz2 ttt2
...

Je voudrais obtenir une table sous cette forme :

ind ref info1 info2 info3 info4
1 001 xxx1 yyy1 zzz1 ttt1
2 001 xxx2 yyy2 zzz1 ttt1
3 002 xxx3 yyy3 zzz2 ttt2
4 002 xxx4 yyy4 zzz2 ttt2
...

En d'autres termes, je veux conserver le nombre de ligne contenu dans la table 1, mais rajouter les variables de la table 2 (avec comme jonction la variable ref).

Sous Excel, pas de souci, avec un recherchev tout fonctionne, mais je suis contraint de le faire sous SAS.

Quelqu'un a-t-il une idée ?

Merci d'avance,
Thomas
t.delclite est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 11h31   #2
Membre du Club
 
Homme Fabien
Inscription : novembre 2008
Messages : 59
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Localisation : France

Informations forums :
Inscription : novembre 2008
Messages : 59
Points : 56
Points : 56
Salut,

Regarde l'exemple ci dessous.

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
DATA table_1;
input 
ind ref $ info1 $ info2 $;
cards;
1 001 xxx1 yyy1
2 001 xxx2 yyy2
3 002 xxx3 yyy3
4 002 xxx4 yyy4
;
run;
 
DATA table_2;
input
ref $ info3 $ info4 $;
cards;
001 zzz1 ttt1
002 zzz2 ttt2
;
run;
proc sort DATA = table_1;BY ref;run;
proc sort DATA = table_2;BY ref;run;
DATA table_3;
	merge table_1 table_2;
	BY ref;
run;
Suistrop
suistrop est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 11h36   #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
Sinon ça en SQL:

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
DATA Table1 ;
INPUT ind$ ref$ info1$ info2$;
cards;
1 001 xxx1 yyy1
2 001 xxx2 yyy2
3 002 xxx3 yyy3
4 002 xxx4 yyy4
;
run;
 
DATA Table2 ;
INPUT ref$ info3$ info4$;
cards;
001 zzz1 ttt1
002 zzz2 ttt2
;
run;
 
PROC SQL;
	CREATE TABLE TABLE3 AS 
	SELECT a.*,b.info3,b.info4
	FROM TABLE1 AS a LEFT JOIN Table2 AS b
	ON a.ref=b.ref;
QUIT;
MEGAMIND2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/05/2011, 12h41   #4
Invité régulier
 
Homme Thomas Delclite
Doctorant
Inscription : mai 2011
Messages : 15
Détails du profil
Informations personnelles :
Nom : Homme Thomas Delclite
Localisation : France

Informations professionnelles :
Activité : Doctorant
Secteur : Enseignement

Informations forums :
Inscription : mai 2011
Messages : 15
Points : 6
Points : 6
Merci pour vos réponses rapides et efficaces.

J'ai retenu la première (Merci Suistrop), je pense que c'est la plus simple à réaliser.

Note pour plus tard : lorsque que la fonction Merge ne fonctionne pas, penser à inverser les 2 noms de bases... (je me sens stupide)

Un grand merci en tout cas.
Thomas
t.delclite 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 13h02.


 
 
 
 
Partenaires

Hébergement Web