Descripción general
Con el lenguaje de programación JMP (JSL), puede escribir un script que asigne valores en función de los datos almacenados en una tabla de datos diferente. El siguiente script de ejemplo demuestra cómo puede utilizar una tabla de búsqueda para asignar niveles de escolaridad en función de la edad de un estudiante. El script hace lo siguiente:
- Abra la tabla de datos original que contiene una lista de estudiantes y sus edades.
- Agregue una nueva columna a la tabla de datos original para almacenar el valor de la escuela.
- Cree una tabla de búsqueda que contenga los rangos de edad para los niveles escolares.
- Recorrer cada fila de la tabla de datos original:
- Obtenga el número de fila en la tabla de búsqueda donde la edad cae dentro del rango de edad.
- Asigne el valor de la escuela de la fila de la tabla de búsqueda a la nueva columna en la tabla de datos original.
Instrucciones
En una sesión de JMP, haga clic en el menú Archivo y seleccione Nuevo ► Script . Copie el script que aparece a continuación y péguelo en la ventana de script. Para ejecutar el script de muestra, haga clic en el menú Editar y seleccione Ejecutar script .
/* Open a sample data table */
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
/* Add a column for the assignment */
dt << New Column( "School", Character );
/* Create a lookup table */
lt = New Table( "SchoolLookup",
Add Rows( 3 ),
New Column( "SchoolLevel", Character, Nominal, Set Values( {"Elementary", "Middle", "High"} ) ),
New Column( "Low", Numeric, Continuous, Format( "Best", 12 ), Set Values( [5, 13, 15] ) ),
New Column( "High", Numeric, Continuous, Format( "Best", 12 ), Set Values( [12, 14, 18] ) )
);
/* Loop through each row of the original data table */
For( i = 1, i <= N Rows( dt ), i++,
/* Obtain a matrix contining the row number of the lookup table where the age falls within the range */
ageRange = lt << Get Rows Where(
Column( lt, "Low" )[] <= Column( dt, "age" )[i] & Column( dt, "age" )[i] <= Column( lt, "High" )[]
);
/* Extract the row number from the matrix */
r = ageRange[1];
/* Assign the school value to the original data table */
Column( dt, "School" )[i] = Column( lt, "SchoolLevel" )[r];
);
Documentación adicional
Puede encontrar más información sobre el lenguaje de scripts JMP en la Guía de scripts JMP . Puede acceder a la guía desde JMP haciendo clic en el menú Ayuda y seleccionando Ayuda JMP . En la tabla de contenido en línea, elija Guía de scripts .
[Anteriormente Nota JMP 46535]
Alternativa 1: utilizar Tablas/Actualizar
Diferencia: utiliza r= ageRange[Length(agerange)] en lugar de agerange[1]
Alternativa 2: usar tablas/unirse
diferencia: genera una nueva tabla