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.
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!
proc sql;
title "Variables Common to Inventory, Sales, and Sales2019";
create table commonvars as
select memname, upcase(name) as name
from dictionary.columns
where libname='WORK' and
memname in ('INVENTORY', 'SALES', 'SALES2019');
select name
from commonvars
group by name
having count(*)=(select count(distinct(memname)) from commonvars);
quit;
1
PROC 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);
12
QUIT;
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!
proc sort data=sales;
by partNumber;
run;
proc print data=sales; run;
proc freq data = Sales noprint;
tables partNumber / out = SalesDupes
(keep = partNumber Count
where = (Count > 1));
run;
proc print data=SalesDupes;run;
data SalesUnique;
set Sales;
uniqueID = catx('.',partNumber,_n_);
run;
proc print data=SalesUnique;
var uniqueID partNumber partName salesPerson;
run;
1
PROC SORTDATA=sales;
2
BY partNumber;
3
RUN;
4
PROC PRINTDATA=sales; RUN;
5
6
PROC FREQDATA = Sales noprint;
7
tables partNumber / out = SalesDupes
8
(keep = partNumber Count
9
where = (Count > 1));
10
RUN;
11
12
PROC PRINTDATA=SalesDupes;RUN;
13
14
DATA SalesUnique;
15
SET Sales;
16
uniqueID = catx('.',partNumber,_n_);
17
RUN;
18
19
PROC PRINTDATA=SalesUnique;
20
var uniqueID partNumber partName salesPerson;
21
RUN;
4 Bloque de código
DATA STEP / PROC CONTENTS / PROC MERGE Data
¡Copiado!
data cars;
set sashelp.cars;
run;
proc contents data=cars; run;
proc contents data=CarsSmall; run;
data combineCars;
merge cars CarsSmallNum;
by make model;
keep Make DriveTrain Model MakeModelDrive Weight;
run;
proc contents data=class; run;
proc contents data=classfit; run;
proc sort data=class; by name; run;
proc sort data=classfit; by name; run;
data merged;
merge class classfit; by Name;
attrib Weight
label = "Weight";
attrib Height Weight Predict format=comma8.2;
run;
proc print data=merged;
run;
proc contents data=merged; run;
1
PROC CONTENTSDATA=class; RUN;
2
PROC CONTENTSDATA=classfit; RUN;
3
4
PROC SORTDATA=class; BY name; RUN;
5
PROC SORTDATA=classfit; BY name; RUN;
6
7
DATA merged;
8
MERGE class classfit; BY Name;
9
attrib Weight
10
label = "Weight";
11
attrib Height Weight Predict FORMAT=comma8.2;
12
RUN;
13
PROC PRINTDATA=merged;
14
RUN;
15
PROC CONTENTSDATA=merged; RUN;
7 Bloque de código
DATA STEP Data
¡Copiado!
data vehicles(rename=(weight=weightLBS));
set vehicles;
run;
1
2
DATA vehicles(rename=(weight=weightLBS));
3
SET vehicles;
4
RUN;
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.
SAS y todos los demás nombres de productos o servicios de SAS Institute Inc. son marcas registradas o marcas comerciales de SAS Institute Inc. en los EE. UU. y otros países. ® indica registro en los EE. UU. WeAreCAS es un sitio comunitario independiente y no está afiliado a SAS Institute Inc.
Este sitio utiliza cookies técnicas y analíticas para mejorar su experiencia.
Saber más.