Publicado el :
ETL CREACION_INTERNA

Recodificación iterativa y Tablas SAS

Este código también está disponible en: Deutsch English Français
En espera de validación
Este script compara dos enfoques para limpiar datos donde el valor '9' representa un valor faltante. Primero, crea un conjunto de datos de prueba. Luego, muestra un enfoque manual y repetitivo con múltiples instrucciones condicionales, y después un enfoque profesional y conciso utilizando un ARRAY SAS© y un bucle DO para procesar todas las variables numéricas dinámicamente.
Análisis de datos

Type : CREACION_INTERNA


Los datos se generan directamente en el script a través de la instrucción DATALINES.

1 Bloque de código
DATA STEP Data
Explicación :
Creación de la tabla 'health_study' con datos brutos incluidos en el código.
¡Copiado!
1DATA health_study;
2 INPUT id expc listen good take hlprob share livaln livchld slpsick nerves exclude count tellfl
3supress nocare satlife vigact liftgroc stairs bend;
4DATALINES;
510001 9 0 1 1 1 0 0 9 0 0 0 1 1 1 0 1 1 9 1 9
610003 1 1 0 0 0 0 1 0 1 0 1 0 1 1 1 0 0 0 9 1
710004 0 0 1 0 0 1 1 0 9 1 0 0 1 0 0 1 9 1 1 1
810005 0 9 9 9 9 9 9 1 0 9 9 9 9 9 9 9 1 0 0 0
9;
10RUN;
2 Bloque de código
DATA STEP
Explicación :
Método manual: Uso de condiciones IF individuales para cada variable con el fin de convertir el valor 9 en valor faltante (.).
¡Copiado!
1DATA health_study2;
2 SET health_study;
3 IF expc = 9 THEN expc = .;
4 IF listen = 9 THEN listen = .;
5 IF good = 9 THEN good = .;
6 IF take = 9 THEN take = .;
7 IF hlprob = 9 THEN hlprob = .;
8 IF share = 9 THEN share = .;
9 IF livaln = 9 THEN livaln = .;
10 IF livchld = 9 THEN livchld = .;
11 IF slpsick = 9 THEN slpsick = .;
12 IF nerves = 9 THEN nerves = .;
13 IF exclude = 9 THEN exclude = .;
14 IF count = 9 THEN count = .;
15 IF tellfl = 9 THEN tellfl = .;
16 IF supress = 9 THEN supress = .;
17 IF nocare = 9 THEN nocare = .;
18 IF satlife = 9 THEN satlife = .;
19 IF vigact = 9 THEN vigact = .;
20 IF liftgroc = 9 THEN liftgroc = .;
21 IF stairs = 9 THEN stairs = .;
22 IF bend = 9 THEN bend = .;
23RUN;
3 Bloque de código
DATA STEP
Explicación :
Método optimizado: Uso de una tabla (ARRAY) que agrupa todas las variables numéricas (_numeric_) y un bucle iterativo para aplicar la transformación automáticamente a todas las columnas.
¡Copiado!
1DATA health_study3;
2 SET health_study;
3 array variable {*} _numeric_;
4 DO i = 1 to dim(variable);
5 IF variable{i} = 9 THEN variable{i} = .;
6 END;
7RUN;
Este material se proporciona "tal cual" por We Are Cas. No hay garantías, expresas o implícitas, en cuanto a la comerciabilidad o idoneidad para un propósito particular con respecto a los materiales o el código contenidos en este documento. We Are Cas no es responsable de los errores en este material tal como existe ahora o existirá, ni We Are Cas proporciona soporte técnico para el mismo.