Buenos dias,
Tengo una tabla de datos muy grande (alrededor de 6 millones de filas). Tiene en particular como columnas una columna de Fecha, una columna de Referencia de Producto y una columna de Resultado (que tiene dos valores posibles: OK o NOK). Cada fila corresponde a una prueba de componente.
Me gustaría poder permitir que el usuario seleccione un período o una fecha. De este período me gustaría poder encontrar y extraer las 5 referencias de productos que tienen más Resultados == NOK en porcentaje en comparación con el número de pruebas realizadas durante el período seleccionado.
No sé cómo escribir esto de manera óptima.
Gracias de antemano si tienes alguna idea para mí.
Hola, hay muchas formas de hacer esto. Una forma particularmente agradable implica JMP Query Builder con un script posterior a la consulta, que solicitará al usuario las fechas de inicio y finalización antes de continuar con el análisis. Recomiendo encarecidamente aprender sobre JMP Query Builder para trabajos como este. Desafortunadamente, es demasiado escribir aquí.
Daré una alternativa simple que todavía funciona bien.
Primero, siempre recomiendo almacenar los datos 1/0 numéricamente, como 1 y 0, usando etiquetas de valor para mostrar cosas como "OK" y "NOK". En su caso, podríamos usar 1 => "OK" y 0 -> "NOK". (Ver tabla de datos adjunta).
Recomiendo esto porque resumir una media por grupos proporciona inmediatamente la proporción de "OK" en cada grupo. Si se han invertido los 1 y 0, la media da la proporción de "NOK".
Entonces, con ese cambio realizado, hacemos una cosa más: agregamos variables de tabla. Haga clic con el botón derecho en el triángulo rojo cerca del nombre de la tabla y seleccione Nueva variable de tabla. Esto muestra un diálogo donde puede nombrar una nueva variable de tabla y darle un valor inicial.

Hacer esto para "Begin" y "End" nos permite definir dos valores (cadenas, en este caso, pero los números también funcionan) que se pueden usar como columnas en fórmulas y scripts. Para cambiar un valor más tarde, simplemente haga doble clic en él para editarlo.
Usando el mismo menú de triángulo rojo, podemos agregar un nuevo script a la tabla de datos. Agregué un script llamado "Worst 5" y pegué el texto del script a continuación.
Names Default To Here(1);
dt = Current Data Table();
//change table variable strings to times. the format used for the string must be one that JMP recognizes.
beg = informat(dt:Begin);
end = informat(dt:End);
//subset the table to get only those rows in the time interval of interest
dtSub = dt << subset(selected Columns (0), rows(dt << get rows where (beg < :date < end)));
//summarize this new table to find averages of the OK column, grouping by product. This will be the proportion of "good"
dtSubSum = dtSub << summary(group(:product), mean(:OK));
//sort this new table, ascending
dtSubSum << sort(replace table, by(:"Mean(OK)"n), order(ascending));
//the first 5 rows now have the lowest proportion of "good", hence highest proportion of "bad"
dtSubSum << subset(selected Columns(0), rows(1::5));
//close the first subset table, and the summary table linked to it.
close(dtSub, nosave);

Ahora es fácil obtener el informe que desea:
1) Cambie los valores de Inicio y Fin como desee.
2) Presione el botón verde en el script "Worst 5" para obtener los resultados.
Nuevamente, hay formas más hábiles de hacer esto, pero requieren conocimiento de JMP Query Builder o de scripts de ventanas interactivas (Árbol de visualización). Recomiendo encarecidamente aprender ambos, pero mientras tanto hay mucho que se puede hacer con variables de tabla y operaciones básicas de tabla.
Otra opción, que no implica secuencias de comandos:
1) Utilice la plataforma Tabulate para calcular las medias, utilizando también un filtro de datos local para limitar el rango de fechas considerado.
2) Haga clic con el botón derecho en la tabla del informe tabulado terminado, seleccione Convertir en tabla de datos, luego ordene la tabla de datos resultante para que las 5 filas "peores" (es decir, los 5 promedios OK más bajos) estén en la parte superior de la tabla.
3) Si lo desea, seleccione estas 5 filas y el subconjunto.
Con suerte, una de estas ideas le ayudará a empezar.
Salud,
Brady