Manejo de datos faltantes al trazar gráficos de variabilidad con varios grupos Y y BY
| m1 | m2 | m3 | m4 | m5 | m6 | m7 | m8 | Dispositivo | Familia |
| 1 | 2 | -2 | -1 | -3 | 2 | -1.5 | 0.5 | D1 | F1 |
| 2 | -2 | 2 | 3 | 2 | -1 | 1 | 2 | D2 | F1 |
| 1.5 | 2 | 2.5 | 2 | 0.5 | 1 | -1 | -1.5 | D3 | F1 |
| -1 | 1 | -1 | -1 | -0.5 | 1 | 0.5 | -1 | D4 | F1 |
| 2 | -3 | 1 | -2 | 1 | -2.5 | 0.5 | -1 | D5 | F1 |
| -3 | -0.5 | -1 | 1.5 | . | . | -1 | 1 | D6 | F2 |
| 2.5 | 1 | 0.5 | 1.5 | . | . | -0.5 | 2 | D7 | F2 |
Voy a usar esta tabla como ejemplo. Supongamos que m1-m8 son algunos parámetros de prueba de algunos dispositivos. En la tabla real, el número de parámetros de prueba consultados puede ser diferente. Quiero trazar gráficos de variabilidad usando JSL para esos parámetros en Dispositivo para diferentes Familias.
En JSL, hice
myVC = Variability Chart(
invisible,
Y(Eval(parameterlist)),
X(:Device),
By(:Family)
);
He agrupado los parámetros m1-m8 como lista de parámetros. Sin embargo, debido a la falta de datos, el código generará un error cuando intente trazar los gráficos para F2.
¿Hay alguna manera de manejar los datos faltantes? Quiero que JMP siga trazando los gráficos de variabilidad para F2 para los parámetros que tienen datos. (m1, m2, m3, m4, m7, m8 en este caso). Después de eso quiero que JMP muestre los gráficos de variabilidad por familia y los guarde como un informe html.
F1 - m1
.
.
F1 - m8 (Orden en el que se muestran los gráficos de variabilidad en el informe)
F2 - m1
.
.
F2 - m8
Tenga en cuenta que la cantidad de parámetros de prueba, la cantidad de dispositivos y la cantidad de familias diferentes pueden variar según las consultas.
Re: manejo de datos faltantes al trazar gráficos de variabilidad con varios grupos Ys y BY¡Bonito! Aunque noté que AsColumn en el gráfico de variabilidad no parece funcionar para mí. Cambiarlo a Columna (lista de parámetros [j]) funcionaRe: manejo de datos faltantes al trazar gráficos de variabilidad con varios grupos Ys y BYXiangLoh,
Es posible que desee revisar una publicación anterior
https://community.jmp.com/t5/Discussions/JSL-Generate-xy-Plot-that-loops-through-columns-with-different/mp/56020#M31438
Las recomendaciones que hice allí se aplicarían a sus datos. Aquí están los pasos / pseudo código:
- crear lista de parámetros (ya hecho)
- Ejecutar, resumir (fgrp = Por (: Familia)); El fgrp es la lista de valores familiares.
- nw = Nueva ventana ("Pruebas", vl = VListBox ());
for( i=1, i<=nitems(fgrp), i++,
fam = fgrp[i];
for(j=1, j<=nitems(parameterlist), j++,
param = parameterlist[j];
idx = dt << get rows where(:Family == fam);
// compute the number of non-missing values for column(param)[idx]
// if that number is greater than 0 or some minimum you set then
myVC = dt << Variability Chart( invisible, Y ( AsColumn(param) ) , X(:Device), By(:Family), where(:Family==fam) );
get rid of the where where textbox and append to VL
); //end j
); //end i
Este método te da mucha flexibilidad. Puede guardar un HTML diferente para cada familia, o cambiar el orden y la trama por variable y luego por familia. En lugar del código para los 2 pasos comentados, puede usar un Tratar()
Try( myVC = dt << Variability Chart( invisible, Y ( AsColumn(param) ) , X(:Device), By(:Family), where(:Family==fam) );
// get rid of the where where textbox and append to VL
, //else do nothing
Show( "variable " || param || " for Family == " || fam || "has no valid data." )
);
Parece mucho trabajo, pero he encontrado que la mayoría de los guionistas después de haber hecho esto una vez, y darme cuenta de la cantidad de opciones que ofrece este método, lo usan a menudo.
¡Buena suerte!