J'ai une petite table de référence avec des intitulés pour une clé consitutée de deux variables. Par exemple :
J'ai une autre table bien plus fournie avec une combinaison des deux variables ci-dessus pour différents individus. Par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 data sit; input v1 v2 libel $15.; cards; 75 1 Paris1erarr 75 2 Paris2ndarr 75 3 Paris3earr 94 . VdM 93 . SSD 99 99 Indéterminé ; run;
Mon objectif est le suivant : je voudrais pouvoir créer une nouvelle table avec tous les enregistrements de sitac en affichant, pour chaque enregistrement, le libel correspondant à une combinaison v1, v2 lue dans la table sit...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 data sitac; input v1 v2 nom $15.; cards; 75 1 Pierre 75 2 Paul 75 3 Jacques 94 1 Marie 94 2 Laeticia 94 3 Christophe 92 1 Philippe 92 2 Amélie 92 3 Arnaud ; run;
MAIS :
Mon problème est que ce n'est pas un lien direct d'équivalence puisqu'il y a beaucoup plus de possibilités dans la table sitac et que je dois faire une correspondance logique lors du lien selon des règles précises :
- Si la combinaison v1/v2 de l'enregistrement de la table sitac est présente dans la table sit, alors effectuer le lien normalement. Ex. pour les 3 premières lignes de sitac, obtenir de façon logique les résultats suivants :
75 1 Pierre Paris1erarr
75 2 Paul Paris2ndarr
75 3 Jacques Paris3earr
Si seul le v1 (mais pas le v2) de la combinaison v1/v2 de l'enregistrement est présente dans la table sit, alors effectuer le lien uniquement sur le v1. Ex. pour les lignes 4 à 6 de sitac, obtenir les résultats suivants :
94 1 Marie VdM
94 2 Laeticia VdM
94 3 Christophe VdM
- Si v1 n'est pas présent dans la table sit (quel que soit la valeur de v2), alors lier avec le 99/99 de la table sit. Ex. pour les lignes 7 à 9 de sitac, obtenir les résultats suivants :
92 1 Philippe Indéterminé
92 2 Amélie Indéterminé
92 3 Arnaud Indéterminé
J'ai abordé cette question en pensant pouvoir créer la table finale que je souhaite avec un proc sql mais je me suis aperçu que je ne savais pas mettre de condition lors de la création du lien ("where if" ???). Est-ce possible ? Ou avec un merge (que j'utilise très peu...) ?
(Mon problème se complique après dans un second temps mais déjà si j'arrive à régler ce premier soucis je saurais peut-être également coder la seconde partie...)
Merci d'avance![]()
Partager