Ciao a tutti,
Sto notando che la piattaforma di distribuzione non sembra accettare riferimenti a colonne nello stesso modo in cui lo fa Graph Builder, ad esempio.
Ho un codice in cui faccio riferimento a diverse colonne all'interno di una tabella dati utilizzando il formato Colonna (dtname, numero). Ad esempio, questo è un pezzo di codice in cui lo faccio con GB e funziona perfettamente:
Graph Builder(
Size( 500, 350 ),
Show Control Panel( 0 ),
Variables(
X( Column( dt_results, NNxcol ) ),
Y( Column( dt_results, NNYCol + N Items( NNXList ) ) ),
Y( Column( dt_results, NNYCol + 1 + N Items( NNXlist ) ), Position( 1 ) ),
Y( Column( dt_results, NNYCol + 2 + N Items( NNXList ) ) )
),
Elements(
Position( 1, 1 ),
Points( X, Y( 1 ), Y( 2 ), Legend( 8 ) ),
Smoother( X, Y( 1 ), Y( 2 ), Legend( 9 ) )
),
Elements( Position( 1, 2 ), Points( X, Y, Legend( 10 ) ), Smoother( X, Y, Legend( 11 ) ) ),
SendToReport(
Dispatch(
{},
"graph title",
TextEditBox,
{Set Text( NNYList[NNYCol] || " Stats vs. " || NNXList[NNxcol] )}
),
Dispatch( {}, "Y title", TextEditBox, {Set Text( NNYList[NNYCol] || " Train & Valid" )} )
)
)
Tuttavia, quando provo a fare qualcosa di simile nella piattaforma di distribuzione, non succede nulla e penso che sia perché la chiamata Continuous Distribution() non sembra gradire fare riferimento a una colonna in questo modo. Sembra che mi piaccia fare riferimento alla colonna come Colonna (nome colonna).
Distribution(
Continuous Distribution( Column( dt_results, NNYCol + NNcolshift ), Quantiles( 0 ) ),
Continuous Distribution( Column( dt_results, NNYCol + 1 + NNcolshift ), Quantiles( 0 ) ),
Continuous Distribution( Column( dt_results, NNYCol + 2 + NNcolshift ), Quantiles( 0 ) )
)
Voglio utilizzare le variabili quando chiamo la piattaforma perché è più flessibile nel codice piuttosto che nella codifica nel nome della colonna stessa. Hai idea del motivo per cui la piattaforma di distribuzione si comporta in modo diverso o di come fare riferimento correttamente alla colonna in modo da ottenere l'output desiderato?
Qualsiasi pensiero/commento è apprezzato.
Grazie!,
DS
Puoi semplicemente inviare un messaggio alla tua tabella dati e rimuovere il riferimento alla tabella nella funzione Column().Quanto al motivo per cui non gli piace la sintassi dello script che funziona con Graph Builder, non lo so.
dt_results << Distribution(
Continuous Distribution( Column( NNYCol + NNcolshift ), Quantiles( 0 ) ),
Continuous Distribution( Column( NNYCol + 1 + NNcolshift ), Quantiles( 0 ) ),
Continuous Distribution( Column( NNYCol + 2 + NNcolshift ), Quantiles( 0 ) )
)
Puoi usare una sintassi divertente e confusa come questa
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col1 = "height";
col2 = "weight";
dist = dt << Distribution(
Continuous Distribution(Column(Column(dt, col1)), Quantiles(0)),
Continuous Distribution(Column(Column(dt, col2)), Quantiles(0))
);
o questo
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col1 = "height";
col2 = "weight";
Eval(EvalExpr(
dist = dt << Distribution(
Continuous Distribution(Column(Eval(col1)), Quantiles(0)),
Continuous Distribution(Column(Eval(col2)), Quantiles(0))
);
));
Modifica: Eval(EvalExpr()) non è necessario nello script precedente. L'ho lasciato lì per sbaglio durante il test di diverse opzioni (stavo giocando con Name Expr(AsColumn())).
Oppure solo uno di questi:
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col1 = "height";
col2 = "weight";
Distribution(Continuous Distribution(Column(Eval(col1))));
colList={col1,col2};
Distribution(column(EvalList(colList)));
Ulteriori dettagli possono essere trovati qui:
https://www.pega-analytics.co.uk/blog/handling-lists-of-columns/ (Grazie @Ressel
e qui:
https://community.jmp.com/t5/Discussions/Updating-column-list-box-using-list-stored-in-variable-not/mp/687314/highlight/true#M87301
La confusione nasce perché (ben noto) Colonna è usato come nome per a argomento denominato In Distribuzione continua. Molti utenti di Jmp presumeranno che fosse il file Colonna() funzione e utilizzarlo di conseguenza.
Lo stesso per Data Table() nella casella di riepilogo Col: L'aggiornamento della casella di riepilogo delle colonne utilizzando l'elenco memorizzato nella variabile non funziona come previsto. È così che dovrebbe essere?
Ciao a tutti,
Grazie per il rapido feedback e l'aiuto in merito. Alla fine ho optato per una miscela di @mmarchandTSI E @jthi è il secondo suggerimento. Sfortunatamente, il suggerimento di @mmarchandTSI non ha funzionato da solo, alla piattaforma non piacevano ancora le variabili per il numero di colonna all'interno del riferimento Column(). Tuttavia, se poi ho eseguito un'Eval() sulle variabili numeriche all'interno del riferimento Column(), ha funzionato perfettamente. Quindi, utilizzando Column(Eval()), come @jthi E @hogi fatto, ha finito per funzionare come previsto.
Grazie per gli ottimi suggerimenti!,
DS