Comme nous l'avons vu précédemment, le programme :
Crée une table destination dans laquelle on recopie le contenu de la table source.
Il est possible de ne recopier que certaines variables de la table source, en utilisant les instructions et options KEEP et DROP.
Supposons que la table source possède 3 variables nommées v1, v2 et v3.
Les programmes suivants :
Ont tous pour effet de créer une table destination qui contient toutes les observations de la table source mais en ne gardant que la colonne v1.
Les deux premiers programmes utilisent les instructions KEEP et DROP, tandis que les deux suivants utilisent ces commandes en tant qu'options de l'instruction SET. Placé en option, le KEEP ou le DROP est exécuté au moment même de la recopie de la table, alors qu'en instruction, il est exécuté après. Si la différence ne se fait pas sentir dans le cas d'une simple recopie de table, comme ici, on verra plus loin un exemple ou elle devient capitale.
Il est possible de ne recopier que certaines observations de la table source.
Deux cas se présentent :
On utilise dans ce cas les options OBS= et FIRSTOBS= de l'instruction SET.
Crée une table destination qui contient les observations m à n de la table source.
Si l'option FIRSTOBS n'est pas précisée, la table est recopiée à partir de la 1ère observation. De même, si l'option OBS n'est pas précisée, la table est recopiée jusqu'à la dernière observation.
On utilise dans ce cas l'instruction WHERE :
Attention : L'instruction WHERE doit être unique dans l'étape DATA.
Par exemple, on écrira :
Et non :
En effet, dans ce programme, la seconde instruction WHERE écrase la première !
De manière équivalente, on peut utiliser les instructions DELETE (efface l'observation courante) et OUTPUT (force l'écriture de l'observation courante dans la table) dans une boucle si alors :
Là encore, dans un cadre simple comme celui-ci, ces méthodes sont équivalentes. On verra par la suite qu'elles ne le sont pas toujours.
L'instruction OUTPUT est en particulier très utile lorsqu'on souhaite "découper"
une table en plusieurs sous-tables. Par exemple, je dispose d'une table source dont
une des variables est le sexe de l'individu, et je souhaite obtenir deux tables,
l'une contenant les données pour les hommes, et l'autre pour les femmes.
J'écris alors le programme suivant :
Au sujet de ces deux dernières remarques, on se reportera au paragraphe "Concaténation et fusion de tables".