Troubleshooting

Comprender y resolver el error "Type of name is unknown" en PROC TABULATE

Simon 26/09/2017 2 vistas

Al crear informes de resumen con SAS© (ya sea a través de SAS© Data Integration Studio o en código Base SAS©), el procedimiento PROC TABULATE es una herramienta potente. Sin embargo, es frecuente encontrar un mensaje de error que bloquea la ejecución del trabajo, similar a este:

ERROR: The type of name (nom_de_variable) is unknown.

El primer instinto suele ser pensar en un error de software o en un hotfix que falta. Sin embargo, en la gran mayoría de los casos, se trata de un problema de sintaxis fundamental relacionado con la lógica de PROC TABULATE.

Illustration

La regla de oro: CLASS vs VAR

La regla de oro: CLASS vs VAR

Para comprender el error, es necesario entender cómo SAS© procesa los datos en este procedimiento. A diferencia de otros procedimientos, PROC TABULATE exige que cada variable mencionada en la instrucción TABLE sea definida previamente.

SAS© necesita saber cómo tratar la variable:

  1. ¿Es una variable de clasificación que creará filas o columnas?

  2. ¿Es una variable numérica sobre la cual se calcularán estadísticas (sumas, promedios)?

Si una variable aparece en TABLE sin haber sido declarada, SAS© no conoce su "tipo" de uso, de ahí el error "unknown".

La solución

Para corregir este problema, debe definir el uso de sus variables mediante las instrucciones CLASS y VAR.

  • La instrucción CLASS: Úsela para las variables categóricas (ej: Departamento, Nombre del curso, Sección). Estas son las variables que crean los "buckets" o agrupaciones.

  • La instrucción VAR: Úsela para las variables de análisis (ej: Costo total, Salario). Estas son las variables sobre las que se realizan los cálculos.

Ejemplo concreto

Imaginemos que desea crear una tabla que cruce el nombre del curso con el departamento, la sección y el costo total.

El código incorrecto (que genera el error):

1PROC TABULATE DATA=ma_table;
2 /* Erreur : SAS ne sait pas ce que sont course_name, department, etc. */
3 TABLE course_name, department*section*tot_cost;
4RUN;

El código corregido:

Aquí, definimos course_name, department y section como variables de clasificación, y tot_cost como la variable a analizar.

1PROC TABULATE DATA=ma_table;
2 /* Déclaration des variables de classification (catégories) */
3 class course_name department section;
4
5 /* Déclaration de la variable d'analyse (chiffres) */
6 var tot_cost;
7
8 /* La table peut maintenant être générée */
9 TABLE course_name, department*section*tot_cost;
10RUN;

Antes de contactar al soporte técnico o buscar un parche de software, siempre verifique su sintaxis. Si utiliza una variable en la estructura de su tabla (TABLE), asegúrese de que esté listada en la instrucción CLASS o en la instrucción VAR.