Publicado el :
ETL CREATION_INTERNE

Ejemplos: Preparar datos

Este código también está disponible en: Deutsch English Français
En espera de validación
El análisis funcional se centra en identificar y resolver los desafíos relacionados con la fusión de conjuntos de datos. Cubre el uso de PROC CONTENTS y PROC PRINT para el examen inicial de los datos, PROC SQL para la detección de variables comunes, y pasos DATA con funciones como CATX e INPUT, así como las instrucciones LENGTH y ATTRIB, para uniformar los atributos de las variables. Los ejemplos ilustran cómo manejar las diferencias de tipo, longitud, formato y etiqueta de las variables, y cómo crear identificadores únicos para los valores BY duplicados a fin de asegurar operaciones de fusión correctas. Las relaciones entre los conjuntos de datos (uno a muchos, muchos a uno, uno a uno) también se abordan, destacando la importancia de una preparación adecuada para cada método de combinación.
Análisis de datos

Type : CREATION_INTERNE


Los ejemplos utilizan datos generados (datalines) o SASHELP, así como conjuntos de datos predefinidos como Inventory, Sales, Sales2019, CarsSmall, Class y Classfit, creados internamente para fines de demostración.

1 Bloque de código
PROC CONTENTS / PROC SORT / PROC PRINT Data
Explicación :
Visualiza la información descriptiva de los conjuntos de datos de entrada para identificar variables comunes y comparar sus atributos. Ordena los conjuntos de datos por la variable PartNumber. Imprime los conjuntos de datos para examinar los valores de la variable común y determinar la relación entre los conjuntos de datos.
¡Copiado!
1PROC CONTENTS DATA=Inventory; RUN;
2PROC CONTENTS DATA=Sales; RUN;
3PROC CONTENTS DATA=Sales2019; RUN;
4QUIT;
5PROC SORT DATA=inventory; BY PartNumber; RUN;
6PROC SORT DATA=Sales; BY PartNumber; RUN;
7PROC SORT DATA=Sales2019; BY PartNumber; RUN;
8 
9PROC PRINT DATA=inventory; RUN;
10PROC PRINT DATA=Sales; RUN;
11PROC PRINT DATA=Sales2019; RUN;
2 Bloque de código
PROC SQL Data
Explicación :
Crea una tabla temporal 'commonvars' a partir de las columnas de los conjuntos de datos 'INVENTORY', 'SALES' y 'SALES2019' en la biblioteca WORK. Luego selecciona los nombres de las variables que son comunes a todos estos conjuntos de datos agrupando por nombre y verificando que el recuento coincida con el número de conjuntos de datos únicos.
¡Copiado!
1PROC SQL;
2 title "Variables Common to Inventory, Sales, and Sales2019";
3 create TABLE commonvars as
4 select memname, upcase(name) as name
5 from dictionary.columns
6 where LIBNAME='WORK' and
7 memname in ('INVENTORY', 'SALES', 'SALES2019');
8 select name
9 from commonvars
10 group BY name
11 having count(*)=(select count(distinct(memname)) from commonvars);
12QUIT;
3 Bloque de código
PROC SORT / PROC FREQ / DATA STEP Data
Explicación :
Ordena los datos de ventas por 'partNumber'. Utiliza PROC FREQ para identificar duplicados de 'partNumber' y los almacena en 'SalesDupes'. Luego, en un paso DATA, crea un nuevo identificador único 'uniqueID' concatenando 'partNumber' con el número de observación automático (_N_) usando la función CATX para cada registro del conjunto de datos 'Sales'. Finalmente, imprime el nuevo conjunto de datos 'SalesUnique' con la variable 'uniqueID'.
¡Copiado!
1PROC SORT DATA=sales;
2 BY partNumber;
3RUN;
4PROC PRINT DATA=sales; RUN;
5 
6PROC FREQ DATA = Sales noprint;
7 tables partNumber / out = SalesDupes
8 (keep = partNumber Count
9 where = (Count > 1));
10RUN;
11 
12PROC PRINT DATA=SalesDupes;RUN;
13 
14DATA SalesUnique;
15 SET Sales;
16 uniqueID = catx('.',partNumber,_n_);
17RUN;
18 
19PROC PRINT DATA=SalesUnique;
20 var uniqueID partNumber partName salesPerson;
21RUN;
4 Bloque de código
DATA STEP / PROC CONTENTS / PROC MERGE Data
¡Copiado!
1DATA cars;
2 SET sashelp.cars;
3RUN;
4 
5PROC CONTENTS DATA=cars; RUN;
6PROC CONTENTS DATA=CarsSmall; RUN;
7 
8DATA combineCars;
9 MERGE cars CarsSmallNum;
10 BY make model;
11 keep Make DriveTrain Model MakeModelDrive Weight;
12RUN;
5 Bloque de código
PROC PRINT / PROC MERGE / DATA STEP Data
¡Copiado!
1PROC PRINT DATA=quarter1; RUN;
2PROC PRINT DATA=quarter2; RUN;
3PROC PRINT DATA=quarter3; RUN;
4PROC PRINT DATA=quarter4; RUN;
5 
6DATA yearly;
7 MERGE quarter1 quarter2 quarter3 quarter4;
8 BY Account;
9RUN;
10 
11DATA yearly;
12 LENGTH Mileage 6;
13 MERGE quarter1 quarter2 quarter3 quarter4;
14 BY Account;
15RUN;
16PROC CONTENTS DATA=yearly; RUN;
6 Bloque de código
PROC CONTENTS / PROC SORT / DATA STEP Data
¡Copiado!
1PROC CONTENTS DATA=class; RUN;
2PROC CONTENTS DATA=classfit; RUN;
3 
4PROC SORT DATA=class; BY name; RUN;
5PROC SORT DATA=classfit; BY name; RUN;
6 
7DATA merged;
8 MERGE class classfit; BY Name;
9 attrib Weight
10 label = "Weight";
11 attrib Height Weight Predict FORMAT=comma8.2;
12RUN;
13PROC PRINT DATA=merged;
14RUN;
15PROC CONTENTS DATA=merged; RUN;
7 Bloque de código
DATA STEP Data
¡Copiado!
1 
2DATA vehicles(rename=(weight=weightLBS));
3SET vehicles;
4RUN;
5 
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.
Información de copyright : Copyright © SAS Institute Inc. All Rights Reserved