Scénario de test & Cas d'usage
Nettoyage, imputation et préparation des données.
Découvrir toutes les actions de dataPreprocessCréation d'une table de clients avec des âges et revenus variés.
| 1 | DATA mycas.clients_marketing; |
| 2 | call streaminit(123); |
| 3 | DO id_client = 1 to 1000; |
| 4 | age = 18 + floor(rand('UNIFORM') * 60); |
| 5 | revenu_annuel = 25000 + floor(rand('NORMAL', 50000, 15000)); |
| 6 | IF rand('UNIFORM') < 0.05 THEN call missing(revenu_annuel); |
| 7 | OUTPUT; |
| 8 | END; |
| 9 | RUN; |
| 1 | PROC CAS; |
| 2 | dataPreprocess.binning / |
| 3 | TABLE={name='clients_marketing', caslib='mycas'}, |
| 4 | inputs={{name='age'}, {name='revenu_annuel'}}, |
| 5 | method='BUCKET', |
| 6 | nBinsArray={5, 4}, |
| 7 | methodOverrides={{vars={'revenu_annuel'}, method='QUANTILE'}}, |
| 8 | copyVars={'id_client'}, |
| 9 | outVarsNamePrefix='GRP', |
| 10 | casOut={name='clients_segmented', caslib='mycas', replace=true}; |
| 11 | RUN; |
| 1 | PROC CAS; |
| 2 | dataPreprocess.binning / |
| 3 | TABLE={name='clients_marketing', caslib='mycas'}, |
| 4 | inputs={{name='age'}, {name='revenu_annuel'}}, |
| 5 | method='BUCKET', |
| 6 | nBinsArray={5, 4}, |
| 7 | methodOverrides={{vars={'revenu_annuel'}, method='QUANTILE'}}, |
| 8 | code={casOut={name='scoring_code_binning', caslib='mycas', replace=true}}; |
| 9 | RUN; |
La table `mycas.clients_segmented` est créée. Elle contient `id_client`, `GRP_age` (1 à 5) et `GRP_revenu_annuel` (1 à 4). La table `mycas.scoring_code_binning` est également créée et contient le code SAS DATA Step permettant de ré-appliquer cette même logique de segmentation sur un autre jeu de données.