Problema en el script JMP para bucleHola, tengo dos preguntas -
Pregunta1 --
Tengo datos simples (adjuntos) y un script que funciona bien, pero siempre que quiera convertirlo en un bucle for. No conseguir lo correcto.
OBJETIVO: quiero el valor de resistencia top10% para cada corriente. Mis datos no son simétricos, significa que la cantidad de puntos de datos para cada corriente es diferente.
En los mismos datos solo hay 7 valores actuales y en datos reales, puede tomar cientos de valores.
Enfoque: estoy generando una tabla cuantil y luego comparo mi valor de resistencia con un valor cuantil del 90 % y agrego una columna adicional 'Top10 %'. Todo funciona bien para datos de muestra con 7 valores actuales, pero necesito un ciclo para ello. ¿Pueden los superusuarios indicarme cuál es el error que estoy cometiendo en mi bucle for? Esto ayudará a aprender cómo implementar bucles for.
Alguna ayuda ?
Ques2 --¿Cuál es la mejor manera de obtener los mejores datos del 95 %?
¿Alguna ayuda aquí?
Modelado Estadístico AvanzadoAutomatización y secuencias de comandosExploración y visualización de datosLa personalización en masaIngeniería de Calidad y ProcesosRe: Problema en el script JMP para bucleGracias por la explicación clara y agradable. Muy útil para aprender cómo funcionan las fórmulas de columna. Gracias de nuevo.
Re: Problema en el script JMP para bucleCon respecto a su lógica de bucle For ()
- Una columna solo puede tener 1 Fórmula.Tener la definición de Fórmula dentro del ciclo For() especificaría una fórmula diferente para cada ciclo.No sé exactamente qué haría JMP, en el mejor de los casos, reemplazaría cada fórmula cuando se creara una nueva, terminando solo con la última creada.
- Al establecer el valor "Fallo" dentro de cada Si, la única vez que su lógica sería precisa es si el Último nivel es el nivel de la fila actual.De lo contrario, digamos que el Nivel 3 es el nivel actual para la fila dada.JMP establecería el valor en la declaración If para que el nivel 1 falle, el nivel 2 falle, el nivel 3 llegue al 10 % superior, pero el bucle For() continúa, por lo que la prueba del nivel 4 resultará en fallar.... .....y todo el resto de los niveles.
- Con una fórmula para una columna que tiene valores de variables definidos fuera de la fórmula (es decir, dtF2, dtQ y las referencias a las columnas en la tabla de datos dtQ), esos valores y la tabla de datos deberán estar presentes siempre que la tabla de datos con el se abre la fórmula.Entonces, lo que debe hacer, cuando use tales fórmulas, es eliminar la fórmula, una vez que la tabla de datos haya ejecutado la fórmula.
dtF2:Name("Top10%") << delete formula;
Aquí hay una versión de la fórmula que creo que funcionaría... No la he probado, pero creo que verá el enfoque.
dtF2 << New Column( "Top10%",
character,
FORMULA(
For( i = 1, N Rows( dtQ ), i++,
x = "";
If( dtF2:Current == dtQ:Level[i] & dtF2:Name( "Res" ) >= dtQ:Name( "90%" )[i],
x = "Top10"
);
);
If( x == "", x = "Fail" );
x;
)
);Re: Problema en el script JMP para bucleSí, perfectamente bien. Una forma mucho mejor y más sencilla de hacerlo. No sabía que también podemos obtener el cuantil de la tabla de resumen. Lo estoy implementando de la manera que usted describe.
Además del cuantil y los datos del 10% superior, ¿algún comentario sobre qué estaba mal en mi "bucle for"?
Gracias por la ayuda.
Re: Problema en el script JMP para bucleCreo que el siguiente script es una metodología más simple para obtener los resultados que desea.

Names Default To Here( 1 );
dtF2 = Data Table( "Final_Data" );
dtSum = dtF2 << Summary(
invisible,
Group( :Current ),
Quantiles( 90, :Res ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "stat" ),
link to original data table( 0 )
);
dtSum << delete columns( N Rows );
dtF2 << Update(
With( dtSum ),
Match Columns( :Current = :Current )
);
Close( dtSum, nosave );
dtF2 << New Column( "Top10%",
character,
formula( If( :Res >= :Quantiles90, "Top10" ) )
);