Scénario de test & Cas d'usage
Limpieza, imputación y preprocesamiento de datos.
Descubrir todas las acciones de dataPreprocessGeneración de datos sucios con valores nulos explícitos y una larga cola de códigos de error poco frecuentes.
| 1 | |
| 2 | DATA casuser.iot_sensores; |
| 3 | call streaminit(456); |
| 4 | DO lectura = 1 to 2000; |
| 5 | u = rand('Uniform'); |
| 6 | IF u < 0.05 THEN Codigo_Estado = ''; |
| 7 | /* Valor Perdido */ ELSE IF u < 0.7 THEN Codigo_Estado = 'NORMAL'; |
| 8 | ELSE IF u < 0.85 THEN Codigo_Estado = 'ALERTA_LEVE'; |
| 9 | ELSE Codigo_Estado = cats('ERR_', rand('Integer', 1, 50)); |
| 10 | /* 50 tipos de errores raros */ OUTPUT; |
| 11 | END; |
| 12 | |
| 13 | RUN; |
| 14 |
| 1 | |
| 2 | PROC CAS; |
| 3 | dataPreprocess.catTrans / TABLE={name='iot_sensores', caslib='casuser'} inputs={{name='Codigo_Estado'}} method='GROUPRARE' arguments={rareThresholdPercent=2} includeMissingGroup=true casOut={name='sensores_limpios', caslib='casuser', replace=true}; |
| 4 | |
| 5 | RUN; |
| 6 | |
| 7 | QUIT; |
| 8 |
| 1 | |
| 2 | PROC CAS; |
| 3 | SIMPLE.freq / TABLE={name='sensores_limpios', caslib='casuser'} inputs={'cat_Codigo_Estado'}; |
| 4 | |
| 5 | RUN; |
| 6 | |
| 7 | QUIT; |
| 8 |
Se espera que la tabla de frecuencia muestre: 1) Una categoría para los valores originalmente nulos (no deben desaparecer). 2) Una categoría consolidada (probablemente la de mayor frecuencia después de NORMAL/ALERTA) que agrupe todos los 'ERR_XX' que aparecían menos del 2% de las veces. Esto valida la robustez de la acción ante datos sucios.