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:
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.
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:
¿Es una variable de clasificación que creará filas o columnas?
¿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".
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):
El código corregido:
Aquí, definimos course_name, department y section como variables de clasificación, y tot_cost como la variable a analizar.
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.