El programa ilustra el uso de la función KCVT para convertir cadenas hexadecimales en caracteres UTF-8. Crea un conjunto de datos a partir de SASHELP.CLASS, reemplazando algunos valores con caracteres especiales (japonés, kannada) y símbolos. Luego define un formato personalizado y una plantilla de gráfico (PROC TEMPLATE) para mostrar estos datos. Finalmente, PROC SGRENDER se utiliza para generar el gráfico que muestra los datos con los caracteres Unicode.
Análisis de datos
Type : MIXTE
El script lee las primeras 6 observaciones de la tabla SASHELP.CLASS. Luego modifica las variables 'name' y 'sex' para insertar caracteres y símbolos Unicode, creando así una nueva tabla de trabajo 'uni'.
1 Bloque de código
DATA STEP
Explicación : Este bloque utiliza un DATA STEP _null_ y la función KCVT para convertir representaciones hexadecimales de caracteres Unicode (letras griegas) en cadenas de caracteres codificadas en UTF-8. Estas cadenas se almacenan luego en variables macro (ulabel, udf_v1, udf_v2) para su uso posterior.
Explicación : Este DATA STEP crea la tabla 'uni' leyendo 6 líneas de sashelp.class. Asigna una etiqueta Unicode a la variable 'age' y modifica las variables 'name' y 'sex' para insertar caracteres Katakana, Kannada y símbolos de género Unicode, demostrando el manejo de datos multilingües.
¡Copiado!
data uni;
attrib age label="&ulabel"; /* Data set label in utf-8 */
attrib sex length=$4; /* NOTE: These are byte lengths: not char lengths */
attrib name length=$32;
set sashelp.class(obs=6);
if _n_ = 2 then /* Alice in Katakana: already utf-8 HEX values */
name='E382A2E383AAE382B9'x;
if _n_ = 4 then /* Carol in Kannada: utf-8 literals directly typed in editor */
name= 'ಕರೂಲ್' ;
sex = ifc(sex='M', kcvt('2642'x, 'u16b', 'utf8'),
kcvt('2640'x, 'u16b', 'utf8')); /* NOTE: short encoding names */
run;
1
DATA uni;
2
attrib age label="&ulabel"; /* Data set label in utf-8 */
3
attrib sex LENGTH=$4; /* NOTE: These are byte lengths: not char lengths */
4
attrib name LENGTH=$32;
5
SET sashelp.class(obs=6);
6
IF _n_ = 2THEN/* Alice in Katakana: already utf-8 HEX values */
7
name='E382A2E383AAE382B9'x;
8
IF _n_ = 4THEN/* Carol in Kannada: utf-8 literals directly typed in editor */
9
name= 'ಕರೂಲ್' ;
10
sex = ifc(sex='M', kcvt('2642'x, 'u16b', 'utf8'),
11
kcvt('2640'x, 'u16b', 'utf8')); /* NOTE: short encoding names */
12
RUN;
3 Bloque de código
PROC FORMAT
Explicación : Este procedimiento define un formato personalizado `utf8_udf`. Este formato mapea los valores numéricos 12 y 13 a las cadenas de caracteres Unicode (letras griegas) almacenadas previamente en las variables macro. Los otros valores se muestran con un formato estándar.
Explicación : El procedimiento TEMPLATE define un modelo de gráfico estadístico personalizado llamado `uni_utf8`. Este modelo crea un diagrama de dispersión (scatterPlot) y está configurado para mostrar los valores de la variable 'name' como etiquetas de datos, utilizando una fuente compatible con Unicode.
Explicación : Este bloque final utiliza el procedimiento SGRENDER para generar un gráfico a partir del modelo `uni_utf8` y el conjunto de datos `uni`. El formato `utf8_udf` se aplica a la variable 'age' para mostrar los caracteres griegos correspondientes. La instrucción `ods graphics` restablece los parámetros gráficos.
¡Copiado!
ods graphics / reset;
proc sgrender template=uni_utf8 data=uni;
format age utf8_udf10.;
run;
1
ods graphics / reset;
2
PROC SGRENDER template=uni_utf8 DATA=uni;
3
FORMAT age utf8_udf10.;
4
RUN;
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.