Gestione dei dati mancanti quando si tracciano grafici di variabilità con più gruppi Y e BY
| m1 | m2 | m3 | m4 | m5 | m6 | m7 | m8 | Dispositivo | Famiglia |
| 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 |
Userò questo tavolo come esempio. Supponiamo che m1-m8 siano alcuni parametri di prova di alcuni dispositivi. Nella tabella attuale, il numero di parametri di test interrogati potrebbe essere diverso. Voglio tracciare grafici di variabilità usando JSL per quei parametri su Dispositivo per famiglie diverse.
In JSL, l'ho fatto
myVC = Variability Chart(
invisible,
Y(Eval(parameterlist)),
X(:Device),
By(:Family)
);
Ho raggruppato i parametri m1-m8 come lista parametri. Tuttavia a causa dei dati mancanti, il codice risulterebbe in errore quando si tenta di tracciare i grafici per F2.
C'è un modo per gestire i dati mancanti? Voglio che JMP continui a tracciare i grafici di variabilità per F2 per i parametri che contengono dati. (m1, m2, m3, m4, m7, m8 in questo caso). Dopodiché voglio che JMP visualizzi i grafici di variabilità per famiglia e li salvi come un rapporto html.
F1 - m1
.
.
F1 - m8 (ordine in cui i grafici di variabilità sono mostrati nel rapporto)
F2 - m1
.
.
F2 - m8
Si noti che il numero di parametri di test, il numero di dispositivi e il numero di famiglie diverse possono variare in base alle query.
Ri: Gestione dei dati mancanti quando si tracciano grafici di variabilità con più gruppi Y e BYBello! Anche se ho notato che AsColumn nel grafico della variabilità non sembra funzionare per me. Cambiandola in Column (parameterlist [j]) funzionaRi: Gestione dei dati mancanti quando si tracciano grafici di variabilità con più gruppi Y e BYXiangLoh,
Potresti voler rivedere un post precedente
https://community.jmp.com/t5/Discussions/JSL-Generate-xy-Plot-that-loops-through-columns-with-different/mp/56020#M31438
Le raccomandazioni, ho fatto lì, vorrei applicare ai tuoi dati. Ecco i passaggi / codice pseudo:
- crea lista parametri (già fatta)
- Esegui, riepiloga (fgrp = Per (: Famiglia)); il follower è la lista dei valori familiari
- nw = Nuova finestra ("Test", 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
Questo metodo ti dà molta flessibilità. È possibile salvare un codice HTML diverso per ogni famiglia o modificare l'ordine e il grafico in base alla variabile e alla famiglia. Invece del codice per i 2 passaggi commentati, potresti usare a Provare()
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." )
);
Sembra un sacco di lavoro, ma ho scoperto che la maggior parte degli sceneggiatori dopo averlo fatto una sola volta, e realizzato la quantità di opzioni offerte da questo metodo, la usano spesso.
In bocca al lupo!