Bonjour,
je cherche à réaliser avec une procédure SQL l'équivalent de l'étape data suivante :
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 data test; set table1; set table2; run;
Bonjour,
je cherche à réaliser avec une procédure SQL l'équivalent de l'étape data suivante :
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 data test; set table1; set table2; run;
ce papier SAS t'expliquera les différents usages de SET.
http://www2.sas.com/proceedings/sugi23/Begtutor/p50.pdf
C'est un UPDATE sur les colonnes identiques (t2 remplace t1). Mais si table1 avait des colonnes qui n'étaient pas dans table2, elles apparaîtraient dans la table finale.
Voit donc la différence entre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 data a; input a b c; cards; 1 2 3 ; run; data b; input a b c; cards; 4 5 6 ; run; data c; set a; set b; run;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 data a; input a b c; cards; 1 2 3 ; run; data b; input d e f; cards; 4 5 6 ; run; data c; set a; set b; run;
Bonjour miasseu,
Je ne connaissait pas un tel usage du SET, merci datametric pour le lien vers cette documentation.
Si j'ai bien compris le PDF, alors la traduction en SQL serait de lier les deux tables par numéro de lignes commune :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 proc sql noprint; create table d(drop=_N_) as select * from (select*, monotonic() as _N_ from a) a inner join (select *, monotonic() as _N_ from b) b on (a._N_ = b._N_); quit;
La jointure SQL implique d'avoir une variable en commun entre les deux tables.
Tu peux aussi faire un produit cartésien (attention au ressources de la machine)...
Dans ton cas tu crées la variable en commun, voir la table en sortie.
Tu peux nous fournir la structure de tes tables?
Oups, petite correction
D'après le doc cité par datametric, on considère que
Ce que je traduit par les instructions suivantes :Combine Multiple SAS Data Sets
SET dsname_1 ;
SET dsname_2 ;
In this example, the SAS Supervisor maintains two
pointers, one for each data set. An observation
would be read from data set dsname_1 followed by
an observation from data set dsname_2, and so on
until an end of file condition occurs in one of the data
sets. The combination of the two data sets would
form a single observation in the new data set.
Where the same variables exist in both data sets, the
values of the second data set would overlay the
values of the first data set.
Joindre les observations par numéro de ligne commune, et remplacer les variables communes par celles de la dernière table appelée.
Pour être rigoureux, cela donnerait donc plutôt ceci :
(faire attention à appeler au niveau du FROM la table 2 avant la table 1, car dans la logique SQL les variables de la première table appelée sont conservées au détriment de la seconde table)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
29 DATA a; input a b c; cards; 1 2 3 ; run; DATA b; input b e f; cards; 4 5 6 7 8 9 ; run; DATA c; SET a; SET b; run; proc sql noprint; CREATE VIEW va as SELECT*, monotonic() AS _N_ FROM a; CREATE VIEW vb as SELECT*, monotonic() AS _N_ FROM b; CREATE TABLE d(DROP=_N_) AS SELECT * FROM vb INNER JOIN va ON (va._N_ = vb._N_); quit;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager