El script al final de esta publicación básicamente hace lo que quiero que haga (es decir, encontrar columnas donde un valor Y es 100 para tiempo = 0), pero también genera un mensaje de registro que me incomoda un poco (habiendo pisado en trampas antes):
A message with an empty Boolean argument enabled an option that was already enabled. That option remains enabled. In previous versions of JMP, this would have disabled the option.
Este mensaje se imprime en el registro para cada columna que se selecciona nuevamente, después de que ya se haya seleccionado una vez como parte de la construcción de mi ciclo. Como alguien relativamente nuevo en la creación de scripts, tengo dos preocupaciones principales:
- ¿Este mensaje de registro es algo que debo evitar por completo y tendré problemas? Eventualmente procesaré tablas más grandes, por lo que este mensaje de registro puede imprimirse cientos de veces para la ejecución de un solo script.
- ¿Existe una forma más inteligente de encontrar todas las columnas de una tabla que tengan un valor Y = 100 para cada fila donde el tiempo = 0? (En mi caso, estaré procesando tablas con muchas columnas, algunas de las cuales contienen resultados que están normalizados al 100% rel. en el tiempo =0. Estas son las columnas que me interesan).
Names Default To Here( 1 );
// table required for example
dt = New Table( "Results (absolute & relative) vs time",
Add Rows( 8 ),
New Column( "time",
Numeric,
Set Values( [0, 1, 2, 3, 0, 1, 2, 3] ),
),
New Column( "Y1_absolute",
Numeric,
Set Values( [7, 8, 1, 9, 0.2, 0.4, 0.65, 0.98] ),
),
New Column( "Y1-relative",
Numeric,
Set Values( [100, 114, 14, 129, 100, 200, 325, 490] ),
),
New Column( "Y2_absolute",
Numeric,
Set Values( [12, 6, 4, 0, 80, 90, 120, 75] ),
),
New Column( "Y2_relative",
Numeric,
Set Values( [100, 50, 33, 0, 100, 113, 150, 94] ),
)
);
// selecting columns where for :time == 0 a Y-value == 100 is found
For( i = 1, i <= N Row( dt ), i++,
For( j = 1, j <= N Col( dt ), j++,
If( Column( j )[i] == 0,
For( k = 1, k <= N Col( dt ), k++,
If( Column( k )[i] == 100,
Column( k ) << Set Selected
)
)
)
)
);