L'instruction DELETE est utilisée dans une étape DATA pour arrêter le traitement de l'observation en cours. Lorsque DELETE est exécutée, l'observation courante n'est pas écrite dans les jeux de données créés par l'étape DATA, et le contrôle retourne immédiatement au début de l'étape DATA pour l'itération suivante. Elle est souvent utilisée dans une clause THEN d'une instruction IF-THEN ou dans un groupe DO exécuté sous condition. Contrairement à l'instruction DROP qui exclut des variables d'un jeu de données en sortie, DELETE exclut des observations entières.
Analyse des données
Type : CREATION_INTERNE
Les exemples utilisent des données générées (datalines).
1 Bloc de code
DATA STEP Data
Explication : Cet exemple crée un jeu de données 'new_data'. Il lit les variables 'id' et 'leafwt'. Si la valeur de 'leafwt' est manquante (représentée par '.'), l'instruction DELETE est exécutée, ce qui supprime l'observation entière du jeu de données final. Seules les observations avec une valeur non manquante pour 'leafwt' seront incluses dans 'new_data'.
Copié !
data new_data;
input id leafwt;
datalines;
1 10.5
2 .
3 25.3
4 .
5 18.0
;
if leafwt=. then delete;
run;
proc print data=new_data;
title 'Observations après suppression des valeurs manquantes de LEAFWT';
run;
1
DATA new_data;
2
INPUT id leafwt;
3
DATALINES;
4
110.5
5
2 .
6
325.3
7
4 .
8
518.0
9
;
10
IF leafwt=. THEN delete;
11
RUN;
12
13
PROC PRINTDATA=new_data;
14
title 'Observations après suppression des valeurs manquantes de LEAFWT';
15
RUN;
2 Bloc de code
DATA STEP Data
Explication : Cet exemple lit des données brutes en ligne (simulant un fichier externe via 'infile datalines'). Il crée un jeu de données 'topsales'. Pour chaque observation lue, il vérifie si la valeur de 'yrsales' (ventes annuelles) est inférieure à 100 000. Si c'est le cas, l'instruction DELETE est exécutée, excluant cette observation du jeu de données 'topsales'. Le jeu de données final 'topsales' ne contiendra que les observations où 'yrsales' est supérieur ou égal à 100 000.
Copié !
data topsales;
infile datalines;
input region $ office $ product $ yrsales;
if yrsales<100000 then delete;
datalines;
East Boston Hardware 120000
West LA Software 95000
North Chicago Electronics 200000
South Miami Services 80000
Central Dallas Retail 150000
;
run;
proc print data=topsales;
title 'Ventes annuelles supérieures à 100 000';
run;
1
DATA topsales;
2
INFILEDATALINES;
3
INPUT region $ office $ product $ yrsales;
4
IF yrsales<100000THEN delete;
5
DATALINES;
6
East Boston Hardware 120000
7
West LA Software 95000
8
North Chicago Electronics 200000
9
South Miami Services 80000
10
Central Dallas Retail 150000
11
;
12
RUN;
13
14
PROC PRINTDATA=topsales;
15
title 'Ventes annuelles supérieures à 100 000';
16
RUN;
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
« Utilisez DELETE principalement pour le nettoyage de qualité de données (gestion des valeurs manquantes, suppression des enregistrements de test). Pour des filtrages plus "métier" (comme dans l'exemple des ventes inférieures à 100 000), l'utilisation d'une instruction IF de sous-ensemble (IF yrsales >= 100000;) est souvent considérée comme plus lisible et concise par la communauté SAS »
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.