Publié le :
Macro EXTERNE

Macro AHGkeepN - Filtrage séquentiel par groupe

Ce code est également disponible en : Deutsch English Español
En attente de validation
La macro `AHGkeepN` permet de filtrer un jeu de données pour ne garder que les N premières observations (ou une plage définie par m et n) pour chaque combinaison unique des variables spécifiées dans le paramètre `by`. Elle effectue d'abord un tri des données, puis utilise un compteur interne dans un Data Step pour sélectionner les lignes désirées. Elle semble dépendre de macros utilitaires externes (`%AHGblank`, `%AHGbarename`, `%AHGcount`) non définies dans ce script.
Analyse des données

Type : EXTERNE


Le jeu de données est spécifié dynamiquement via le paramètre `dsn` lors de l'appel de la macro.

1 Bloc de code
PROC SORT Data
Explication :
Trie la table en entrée (`dsn`) selon les variables de regroupement (`by`) et stocke le résultat dans la table de sortie (`out`). Si `out` n'est pas spécifié, un nom est dérivé de `dsn`.
Copié !
1%IF %AHGblank(&out) %THEN %let out=%AHGbarename(&dsn);
2PROC SORT DATA=&dsn out=&out;
3 BY &BY;
4RUN;
2 Bloc de code
DATA STEP Data
Explication :
Lit la table triée et utilise un compteur temporaire (`ahuigeID3498273456`) pour numéroter les observations au sein de chaque groupe défini par la dernière variable de la liste `by`. Seules les observations dont le rang est strictement supérieur à `m` et inférieur ou égal à `n` sont conservées.
Copié !
1DATA &out(drop=ahuigeID3498273456);
2 SET &out;
3 BY &BY;
4 IF first.%scan(&BY,%AHGcount(&BY)) THEN ahuigeID3498273456=1;
5 ELSE ahuigeID3498273456+1;
6 IF &mTHEN OUTPUT;
7RUN;
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.