VECTOR fuera de una estructura de bucle (mandato VECTOR)
VECTOR se suele asociar con la estructura de bucle, ya que la variable de índice para LOOP se puede utilizar como subíndice. Sin embargo, el subíndice puede proceder de otros lugares, incluso de los datos.
Ejemplo
* Create a single case for each of students 1, 2, and 3.
DATA LIST /STUDENT 1 SCORE 3-4 TESTNUM 6.
BEGIN DATA
1 10 1
1 20 2
1 30 3
1 40 4
2 15 2
2 25 3
3 40 1
3 55 3
3 60 4
END DATA.
VECTOR RESULT(4).
COMPUTE RESULT(TESTNUM)=SCORE.
AGGREGATE OUTFILE=*/BREAK=STUDENT
/RESULT1 TO RESULT4=MAX(RESULT1 TO RESULT4).
PRINT FORMATS RESULT1 TO RESULT4 (F2.0).
PRINT /STUDENT RESULT1 TO RESULT4.
EXECUTE.
- Los datos son puntuaciones en pruebas registradas en casos separados junto con un número de identificación de estudiante y un número de prueba. En este ejemplo, hay cuatro pruebas posibles para tres estudiantes. No todos los estudiantes tomaron todas las pruebas.
- El vector RESULT crea las variables RESULT1 a través de RESULT4.
- Para cada caso,
COMPUTEasigna el valor SCORE a una de las cuatro variables de vector, en función del valor de TESTNUM. Las otras tres variables de vector para cada caso mantienen el valor perdido del sistema en el que se inicializaron. - La agregación por la variable STUDENT crea nuevos casos, tal como se muestra en la salida del mandato
PRINT. La funciónMAXenAGGREGATEdevuelve el valor máximo entre casos con el mismo valor para STUDENT. Si un estudiante ha realizado una prueba determinada, se devuelve un valor válido como valor para la variable RESULT1, RESULT2, RESULT3o RESULT4.
