top of page

FUSIONS DE TABLES

Sur SAS, il y a deux types de fusions de tables :

- Fusion verticale : on fait une concaténation de tables qui ont des structures identiques (variables de même type et disposées de la même façon). Les lignes (ou observations) sont alors empilées.

La concaténation s'effectue, dans une étape DATA, avec l'instruction SET.

DATA table_finale; /* Création de la table qui va accueillir les autres tables. */

SET table1 table 2; /* Fusion verticale des tables. */

RUN;

- Fusion horizontale : on fait une jointure de tables selon une variable clé identique aux tables. Les colonnes (ou variables) sont alors mises côte à côte.

La fusion horizontale s'effectue en deux temps : d'abords on trie les tables avec l'instruction PROC SORT, puis on les fusionne (jointure) avec l'instruction MERGE.

/* Tri des tables selon la variable clé nommée id */

PROC SORT DATA=table1;

BY id;

RUN;

PROC SORT DATA=table2;

BY id;

RUN;

/* Fusion des tables selon la variable clé nommée id */

 

DATA table_finale; /* Création de la table qui va accueillir les autres tables. */

MERGE table1 table 2; /* Fusion horizontale des tables. */

BY id;

RUN;

On peut aussi rajouter des conditions pour filtrer les données issues d'une fusion (pour sélectionner juste certaines données).

DATA table_finale; /* Création de la table qui va accueillir les autres tables. */

MERGE table1 (IN=c1) table 2 (IN=c2); /* Fusion horizontale des tables. */

BY id;

IF c1 AND c2 THEN OUTPUT;

RUN;

Il y a 5 façons différentes de faire une jointure :

- IF c1 : Jointure pour tous les identifiants d'une table.

- IF c1 OR c2 : Jointure pour tous les identifiants des deux tables.

- IF c1 AND c2 : Jointure si les identifiants sont communs aux deux tables. Exemple de cette jointure    juste au dessus.

- IF c1 AND NOT c2 : Jointure si les identifiants sont présents uniquement dans une table.

- IF NOT (c1 AND c2) : Jointure si les identifiants sont non communs aux deux tables.

Libre à vous de remplacer ou non c1 et c2 par des conditions.

bottom of page