Comment utiliser l’instruction RETAIN dans SAS (avec exemples)



Vous pouvez utiliser l’instruction RETAIN dans SAS pour spécifier une variable dont la valeur ne doit pas être définie comme manquante au début de chaque itération d’une étape DATA .

L’instruction RETAIN peut être utilisée pour diverses tâches dans SAS, mais voici les trois cas d’utilisation les plus courants :

Cas 1 : utilisez RETAIN pour calculer une somme cumulée

data new_data;
    set original_data;
    retain cum_sum;
    cum_sum + values_variable;
run;

Cas 2 : utilisez RETAIN pour calculer une somme cumulée par groupe

data new_data;
    set original_data;
    by grouping_variable
    retain cum_sum_by_group;
    if first.grouping_variable then cum_sum_by_group = values_variable;
    else cum_sum_by_group = cum_sum_by_group + values_variable;
run;

Cas 3 : utilisez RETAIN pour calculer un nombre cumulatif par groupe

data new_data;
    set original_data;
    by grouping_variable
    retain count_by_group;
    if first.grouping_variable then count_by_group = 1;
    else count_by_group = count_by_group + 1;
run;

Les exemples suivants montrent comment utiliser chaque cas en pratique avec l’ensemble de données suivant dans SAS qui montre les ventes réalisées sur des jours consécutifs par différents magasins :

/*create dataset*/
data original_data;
    input store $ sales;
    datalines;
A 4
A 5
A 2
B 6
B 3
B 5
C 3
C 8
C 6
;
run;

/*view dataset*/
proc print data=original_data;

Exemple 1 : utilisez RETAIN pour calculer une somme cumulée

Le code suivant montre comment utiliser l’instruction RETAIN pour créer une nouvelle colonne dans l’ensemble de données qui affiche la somme cumulée des ventes :

/*calculate cumulative sum of sales*/
data new_data;
    set original_data;
    retain cum_sales;
    cum_sales+sales;
run;

/*view results*/
proc print data=new_data;

La nouvelle colonne appelée cum_sales contient la somme cumulée des valeurs de la colonne ventes .

Par exemple:

  • Somme cumulée sur la ligne 1 : 4
  • Somme cumulée sur la ligne 2 : 4 + 5 = 9
  • Somme cumulée sur la ligne 3 : 4 + 5 + 2 = 11

Et ainsi de suite.

Dans cet exemple, l’instruction RETAIN définit la variable appelée cum_sales à zéro, puis à chaque itération de l’étape DATA , elle ajoute simplement la nouvelle valeur des ventes au total cumulé de cum_sales .

Exemple 2 : utilisez RETAIN pour calculer une somme cumulée par groupe

Le code suivant montre comment utiliser l’instruction RETAIN pour créer une nouvelle colonne dans l’ensemble de données qui affiche la somme cumulée des ventes par magasin :

/*calculate cumulative sum of sales by store*/
data new_data;
    set original_data;
    by store;
    retain cum_sales_by_store;
    if first.store then cum_sales_by_store = sales;
    else cum_sales_by_store = cum_sales_by_store + sales;
run;

/*view results*/
proc print data=new_data;

La nouvelle colonne appelée cum_sales_by_store contient la somme cumulée des valeurs de la colonne ventes , regroupées par magasin.

Dans cet exemple, l’instruction RETAIN définit la variable appelée cum_sales_by_store sur zéro, puis à chaque itération de l’étape DATA , elle vérifie si la valeur dans la colonne store était la première occurrence de cette valeur particulière.

S’il s’agissait de la première occurrence, la valeur de cum_sales_by_store était définie sur la valeur de la colonne des ventes. Sinon, la valeur de la colonne sales a été ajoutée à la valeur existante pour cum_sales_by_store .

Exemple 3 : utilisez RETAIN pour calculer un nombre cumulatif par groupe

Le code suivant montre comment utiliser l’instruction RETAIN pour créer une nouvelle colonne dans l’ensemble de données qui affiche le nombre cumulé de ventes par magasin :

/*calculate cumulative count by store*/ 
data new_data;
    set original_data;
    by store
    retain store_count;
    if first.store then store_count = 1;
    else store_count = store_count + 1;
run;

/*view results*/
proc print data=new_data;

La nouvelle colonne appelée store_count contient le nombre cumulé de chaque magasin.

Dans cet exemple, l’instruction RETAIN définit la variable appelée store_count sur zéro, puis, à chaque itération de l’étape DATA , elle vérifie si la valeur dans la colonne store était la première occurrence de cette valeur particulière.

S’il s’agissait de la première occurrence, la valeur de store_count était définie sur 1. Sinon, une valeur de 1 était ajoutée à la valeur existante pour store_count .

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans SAS :

Comment calculer la somme par groupe dans SAS
Comment calculer la moyenne par groupe dans SAS
Comment calculer une moyenne mobile dans SAS

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *