Publicado el :
Estadística CREATION_INTERNE

Detalles Ejemplo 3 para PROC BOXPLOT

Este código también está disponible en: Deutsch English Français
En espera de validación
Este script SAS© crea un conjunto de datos que simula diámetros de tubos de cobre por lotes. Luego genera diagramas de caja (box plots) para visualizar la distribución. El ejemplo se centra en la opción 'clipfactor' que permite truncar el eje Y para evitar que los valores extremos eclipsen visualmente el resto del gráfico, al tiempo que señala estas truncaciones mediante leyendas personalizadas.
Análisis de datos

Type : CREATION_INTERNE


Datos 'Newtubes' creados a través de DATALINES con bucles anidados para generar los identificadores de lote (Batch).

1 Bloque de código
DATA STEP Data
Explicación :
Creación del conjunto de datos con lectura continua ( { "lang": "es", "titre": "Lectura de datos multicolumna y multilinea", "categorie": "ETL", "tags": [ "DATA STEP", "INPUT", "INFILE", "DATALINES", "TRAILING AT", "DOUBLE TRAILING AT" ], "admin": 0, "cas": 0, "external_data_not_found": 1, "description": "Script SAS que ilustra diferentes técnicas de lectura de datos brutos (archivos planos o datalines) cuando los registros se extienden en múltiples columnas o líneas, utilizando los punteros de control de línea (@ y @@).", "description_detaillee": "El script presenta tres escenarios: 1) Lectura de un archivo externo donde varias observaciones se suceden en la misma línea, requiriendo el operador '@@'. 2) Lectura simple con mantenimiento de línea '@' que demuestra la pérdida de datos si el puntero se libera implícitamente al final del paso DATA. 3) Lectura secuencial múltiple en la misma línea con '@' para extraer todos los datos.", "analyse_donnees": { "type_source": "MIXTE", "details": "El primer bloque lee un archivo externo 'C:\datasets\quiz2.txt' (ruta de Windows a adaptar para Viya/Linux). Los bloques siguientes utilizan datos internos (DATALINES)." }, "infos_copyright": { "copyright_detecte": false, "copyright_info": null }, "blocs_code": [ { "est_creation_donnees": true, "procedure_principale": "DATA STEP", "code_sas": "DATA data_multi_col;\n\tinfile \"C:\\datasets\\quiz2.txt\" firstobs=3;\n\n\t* input name $ 1-10 (q1-q5) (1.) mid final @@;\n\t\n\t/* Utilisation de @@ pour maintenir le pointeur sur la ligne */\n\tinput name $CHAR10. (q1-q5) (1.) mid final @@;\n\tif mid=. then mid=0;\n\tif final=. then final=0;\n\tquiz_score=mean(q1,q2,q3,q4,q5);\n\ttotal_score=quiz_score*8 + mid*0.3 + final*0.3;\n\n\tif total_score>=90 then grade='A';\n\telse if total_score>=80 then grade='B';\n\telse if total_score>=70 then grade='C';\n\telse if total_score>=60 then grade='D';\n\telse grade='F';\n\tkeep name total_score grade;\nRUN;", "explication_code_sas": "Este bloque lee un archivo de texto externo. El uso de '@@' al final de la instrucción INPUT permite leer varias observaciones concatenadas sucesivamente en la misma línea física en el archivo fuente. Luego se realizan cálculos de puntuaciones y asignación de calificaciones." }, { "est_creation_donnees": false, "procedure_principale": "PROC PRINT", "code_sas": "PROC PRINT DATA=data_multi_col;\nRUN;\nQUIT;", "explication_code_sas": "Muestra el conjunto de datos resultante 'data_multi_col'." }, { "est_creation_donnees": true, "procedure_principale": "DATA STEP", "code_sas": "DATA TEST_1;\n\tinput x y @;\n\toutput;\n\tdatalines;\n11 12 13 19 32 32 34 43 12 09\n45 24 33 34 75 74 45 86 32 54\n;\nRUN;", "explication_code_sas": "Demostración de una lectura 'incompleta'. El puntero '@' mantiene la línea para la iteración actual, pero el puntero se libera al final implícito del paso DATA. Resultado: solo se lee el primer par (x,y) de cada línea (11 12, luego 45 24), el resto de la línea se ignora." }, { "est_creation_donnees": false, "procedure_principale": "PROC PRINT", "code_sas": "PROC PRINT DATA=TEST_1;\nRUN;\nQUIT;", "explication_code_sas": "Muestra el resultado de la lectura parcial." }, { "est_creation_donnees": true, "procedure_principale": "DATA STEP", "code_sas": "DATA TEST_2;\n\tinput x y @;\n\toutput;\n\tinput x y @;\n\toutput;\n\tinput x y @;\n\toutput;\n\tinput x y @;\n\toutput;\n\tinput x y @;\n\toutput;\n\tdatalines;\n11 12 13 19 32 32 34 43 12 09\n45 24 33 34 75 74 45 86 32 54\n;\nRUN;", "explication_code_sas": "Lectura exhaustiva de una línea densa. Al repetir la instrucción INPUT con '@' dentro del mismo paso DATA, se fuerza a SAS a leer sucesivamente los pares de valores en la misma línea física antes de pasar a la siguiente línea." }, { "est_creation_donnees": false, "procedure_principale": "PROC PRINT", "code_sas": "PROC PRINT DATA=TEST_2;\nRUN;\nQUIT;", "explication_code_sas": "Muestra los datos completos leídos por TEST_2." } ] } ) de los valores de diámetro. Los bucles DO anidados generan la variable de grupo 'Batch' (15 lotes) con 5 observaciones por lote.
¡Copiado!
1DATA Newtubes;
2 label Diameter='Diameter in mm';
3 DO Batch = 1 to 15;
4 DO i = 1 to 5;
5 INPUT Diameter @code_sas_json/8_SAS_Intro_ReadFile_MultiCol_@@.json;
6 OUTPUT;
7 END;
8 END;
9 DATALINES;
1069.13 69.83 70.76 69.13 70.81
1185.06 82.82 84.79 84.89 86.53
1267.67 70.37 68.80 70.65 68.20
1371.71 70.46 71.43 69.53 69.28
1471.04 71.04 70.29 70.51 71.29
1569.01 68.87 69.87 70.05 69.85
1650.72 50.49 49.78 50.49 49.69
1769.28 71.80 69.80 70.99 70.50
1870.76 69.19 70.51 70.59 70.40
1970.16 70.07 71.52 70.72 70.31
2068.67 70.54 69.50 69.79 70.76
2168.78 68.55 69.72 69.62 71.53
2270.61 70.75 70.90 71.01 71.53
2374.62 56.95 72.29 82.41 57.64
2470.54 69.82 70.71 71.05 69.24
25;
2 Bloque de código
PROC BOXPLOT
Explicación :
Generación de un diagrama de caja estándar con ODS Graphics activado. Muestra la distribución del diámetro para cada lote.
¡Copiado!
1ods graphics on;
2title 'Box Plot for New Copper Tubes' ;
3PROC BOXPLOT DATA=Newtubes;
4 plot Diameter*Batch / odstitle = title;
5RUN;
3 Bloque de código
PROC BOXPLOT
Explicación :
Generación del diagrama con la opción 'clipfactor=1.5'. Esta opción trunca los diagramas de caja cuyas bigotes se extenderían demasiado (valores extremos), permitiendo hacer zoom en la distribución central.
¡Copiado!
1title 'Box Plot for New Copper Tubes' ;
2PROC BOXPLOT DATA=Newtubes;
3 plot Diameter*Batch /
4 odstitle = title
5 clipfactor = 1.5;
6RUN;
4 Bloque de código
PROC BOXPLOT
Explicación :
Versión enriquecida del gráfico truncado. La opción 'cliplegend' añade una leyenda explicativa y 'clipsubchar' define el carácter '#' para marcar los lotes que han sufrido una truncación.
¡Copiado!
1title 'Box Plot for New Copper Tubes' ;
2PROC BOXPLOT DATA=Newtubes;
3 plot Diameter*Batch /
4 odstitle = title
5 clipfactor = 1.5
6 cliplegend = '# Clipped Boxes'
7 clipsubchar = '#';
8RUN;
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 : SAS SAMPLE LIBRARY