Cómo hacer que la secuencia de comandos se ejecute para cada muestra en una lista si hay varias entradas por muestra en la tabla de datos.Tengo una tabla de datos en la que se midieron las mismas muestras varias veces (consulte el ejemplo a continuación). Las muestras están separadas por su identificador.

Quiero que mi secuencia de comandos pueda realizar el mismo conjunto de cálculos en cada muestra para poder determinar los límites de control y hacer un gráfico de control para A, B, C, etc. No conozco el identificador de cada muestra. Ya tengo un script que puede hacer mis cálculos y hacer los gráficos por mí, simplemente no puede hacer cálculos separados para cada identificador.
Mi primer paso fue usar algún tipo de bucle para hacer esto. Tengo un script que devuelve cada identificador único en una lista y me da el número de identificadores únicos como una configuración para el ciclo.
Identifiers = Column( "Identifier") << GetAsMatrix();
Identifiers set = Associative Array( Identifiers);
Unique Identifiers = Identifiers set << Get Keys;
nUnique Identifiers = N Items (Unique Identifiers);
Sin embargo, parece que no puedo hacer que un bucle funcione. ¿Hay una mejor manera de hacer esto? ¿O alguien podría mostrarme cómo hacer el bucle?
Estoy usando JMP 10.
¡Gracias!
ScriptingRe: Cómo hacer que el script se ejecute para cada muestra en una lista si hay varias entradas por muestra en la tabla de datos.Hay muchas formas de hacer esto, pero una es simplemente agregar un filtro de datos local a sus plataformas existentes.Aquí hay un ejemplo usando el generador de gráficos:
Names default to here(1);
//Open some sample data
dt = Open( "$Sample_data/big class.jmp" );
//Your code
Identifiers = Column( "age") << GetAsMatrix();
Identifiers set = Associative Array( Identifiers);
Unique Identifiers = Identifiers set << Get Keys;
nUnique Identifiers = N Items (Unique Identifiers);
//A window to hold a bunch of graphs
win = New Window("Graphs", graphbox = v list box());
//Open a graph that is filtered to only show each unique identifier
//to keep things organized add it to a single window.
for( i=1, i<=nUnique Identifiers, i++,
win << Append(<BR /> //To get this script I opened graph builder and added a local data filter for one age<BR /> //and then copied/pasted it here and replaced the age with 4Unique Identifiers[i]
Graph Builder(
Size( 534, 456 ),
Show Control Panel( 0 ),
Variables( X( :height ), Y( :weight ) ),
Elements( Points( X, Y, Legend( 2 ) ) ),
Local Data Filter(
Close Outline( 1 ),
Add Filter(
columns( :age ),
Where( :age == Unique Identifiers[i] ),
Display( :age, N Items( 6 ) )
)
)
)
)
);Re: Cómo hacer que el script se ejecute para cada muestra en una lista si hay varias entradas por muestra en la tabla de datos.Me pregunto si el uso de las plataformas de gráficos de control integradas para calcular los límites y las medidas de la gráfica funcionaría, especialmente si asigna Identificador al rol de análisis Por.
Simplemente no quiero que pierda mucho tiempo escribiendo scripts si duplica la funcionalidad que ya está disponible.
Re: Cómo hacer que el script se ejecute para cada muestra en una lista si hay varias entradas por muestra en la tabla de datos.¿Cómo podría hacer cálculos adicionales filtrados por el identificador? Quiero hacer un poco de manipulación de datos y luego calcular mis propios límites en función de los datos por identificador que luego se agregarían a cada uno de los gráficos, por lo que creo que cualquier tipo de filtro debería venir antes del guión del gráfico final. Tengo un script que puede hacer eso y puedo publicarlo si es necesario, pero es bastante largo. Realmente solo estoy buscando una manera de hacer el script que ya ejecuté para cada identificador en lugar de todas las filas en la tabla de datos