Sto cercando di creare un oggetto Class che contenga metodi e proprietà che trovo utili quando lavoro con i report di distribuzione.
Tutto funziona come vorrei quando non provo a filtrare il rapporto o la tabella dei dati, ma quando provo a inserire il rapporto comincio ad avere problemi.
Il problema principale è che dopo aver filtrato il rapporto quando entro nella struttura di visualizzazione per estrarre e salvare i valori che non riflettono il filtro.Ad esempio, se la colonna che sto analizzando ha una media di 132 prima del filtraggio e una media di 134 dopo il filtraggio, il rapporto di distribuzione mostrerà 134 per la media ma l'albero di visualizzazione restituirà 132.
Make Distribution = Method({filter={}},
Try(
Column(dt,col) << Set Name("Data");
show(NItems(filter)!=0);
If(
NItems(filter)!=0,
dist = dt << Distribution(
Automatic Recalc( 1 ),
Continuous Distribution( Column( :Data ),
Local Data Filter(
Add Filter(Where(:Data >= filter[0] & :Data<= filter[1]))
)
),
),
dist = dt << Distribution(Automatic Recalc(1),Continuous Distribution(Column(:Data)));
);
rdist = dist << Report;
show(rdist[1]);
tmp = rdist["Summary Statistics"][NumberColBox(1)] << Get As Matrix;
mean = tmp[1];
stdev = tmp[2];
std_err_mean = tmp[3];
up_95_mean = tmp[4];
low_95_mean = tmp[5];
N = tmp[6];
dist_graph = rdist[OutlineBox("Data")][PictureBox(1)];
Column(dt,"Data") << Set Name(col);
,
Throw("Error in Making Distribution: "||char(exception_msg))
);
);Sopra è il metodo in cui sto creando il rapporto di distribuzione, aggiungendo il filtro locale ed estraendo i valori delle statistiche di riepilogo dall'albero di visualizzazione.
Ho anche provato a utilizzare una routine Seleziona dove e Elimina righe, ma Seleziona dove non sta facendo nulla quando all'interno del metodo quel metodo è sotto.
Filter Table = Method({filter},
dt << Select Where(Column(dt,col)<FILTER>filter[2]);
dt << Delete Rows;
);</FILTER>Lo sto facendo perché abbastanza spesso ho bisogno di ottenere varie statistiche o elementi riassuntivi dai rapporti di distribuzione e questo lo rende una sintassi facile e facile da modificare.
Ho allegato l'intera classe a questo post.
Qualsiasi aiuto sarebbe apprezzato.
CIAO,
Rispondo perché ho visto un comportamento simile in JMP 13.Quando avevo un filtro dati allegato, potevo ottenere e impostare valori su una colonna ed eseguire ordinamenti di tabelle e manipolazioni di riepilogo tabelle, ma ottenevo risultati casuali con la selezione delle righe. Il mio lavoro era ottenere i valori della colonna come vettori (l'analisi richiedeva colonne numeriche) e utilizzare le funzioni loc(). Quindi ho fatto i miei calcoli e ho aggiornato i valori della tabella di conseguenza.
L'assistenza JMP è stata informata. Li segnalerò per guardare questo post sul blog perché il comportamento che hai descritto sembra essere lo stesso.
Nessun effetto purtroppo.
@awsmagala ,
Consiglierei di introdurre un piccolo ritardo utilizzando wait tra la costruzione della tabella dati dopo l'applicazione della piattaforma.
Wait(0.1);