JSL Crea una nuova tabella di riepilogo con i valori massimi delle colonne variabiliCiao,
Mi è piaciuto leggere e trovare soluzioni su queste pagine di discussione per un po' di tempo ormai, ma ora sto armeggiando per capirlo.
Ho una tabella di dati che fornisce un numero variabile di colonne, generato automaticamente dalla macchina, in cui le prime 14 colonne sono sempre le stesse informazioni identificative. Le altre colonne, dalle 15 in poi, sono dati numerici continui in cui i nomi delle colonne varieranno sempre.
Il problema è che sto cercando di automatizzare la creazione di una tabella di riepilogo che raggrupperà i dati in base alle informazioni di identificazione e avrà anche una colonna dei dati massimi per ciascuna colonna di dati.
Con un numero variabile di colonne di dati e nomi di colonne variabili, è possibile scorrere ogni colonna? Come un ciclo for per ottenere tutti i valori Max nella tabella di riepilogo? Sono limitato dall'impossibilità di nominare tutte le colonne b/c dei nomi di colonna variabili ogni pull, ma è sicuro dire che ogni colonna dopo la 14a colonna avrà bisogno dei valori massimi trovati.
Questo è lo script JSL che ho cercato di modificare, ma ho raggiunto un vicolo cieco nella generazione delle colonne Max.
sumdt = table << Summary(
Group(:NAME,:ID),
(Max(Column(table, 15:154)), // having issue on this line
Output Table Name("Summary Max Values")
);
Grazie per qualsiasi contributo al mio problema!
SceneggiaturaRe: JSL Crea una nuova tabella di riepilogo con i valori massimi delle colonne variabiliCon l'ultima versione di JMP, il codice funziona correttamente. Grazie!
Re: JSL Crea una nuova tabella di riepilogo con i valori massimi delle colonne variabiliCiao, grazie per il tuo codice. Qui ho scoperto che posso ottenere il massimo della prima colonna numerica, altezza. Vedi allegato. Immagino che Max funzioni solo sul primo valore della lista. Potete aiutarmi a sapere perché?
Re: JSL Crea una nuova tabella di riepilogo con i valori massimi delle colonne variabiliGrazie mille @txnelson
È perfetto. Poiché so quali colonne voglio rimuovere, la funzione Rimuovi da() è proprio ciò di cui avevo bisogno.
Ecco fondamentalmente il codice che fa esattamente quello di cui ho bisogno:
Names default to here( 1 );
// Open Data Table: big class.jmp
// → Data Table( "big class" )
dt = Open( "$SAMPLE_DATA/big class.jmp" );
colNamesList = dt << get column names( continuous, string );
Remove From(colNamesList, 1,2 ); //removes first two columns that I don't want evaluated
sumdt = dt << summary(
Group( :Sex, :Age ),
max( colNamesList ),
Output Table( "Summary Max Values"),
Link to Original Data Table( 0 )
);
Re: JSL Crea una nuova tabella di riepilogo con i valori massimi delle colonne variabiliDopo aver creato colNamesList, puoi utilizzare la funzione Rimuovi da() per eliminare righe specifiche nell'elenco, quindi una volta che l'elenco è ridotto alle sole colonne desiderate, puoi usarlo per la generazione della tabella di riepilogo.
Vedere la voce Scripting Index per la definizione e l'esempio della funzione Rimuovi da()
Re: JSL Crea una nuova tabella di riepilogo con i valori massimi delle colonne variabiliGrazie @txnelson ,
che ha parzialmente risolto il mio problema.
La mia tabella di dati originale ha colonne di date che non voglio che i valori massimi vengano analizzati, in pratica incontrando il problema che non voglio calcolare i valori massimi delle prime 14 colonne indipendentemente dal loro tipo di dati.
C'è un modo per ignorare le prime 14 colonne o sarebbe più semplice creare una nuova tabella che elimini le colonne indesiderate prima di passarla a una tabella di riepilogo?
Grazie,
Gloria
Re: JSL Crea una nuova tabella di riepilogo con i valori massimi delle colonne variabiliEcco un esempio di come eseguire le operazioni desiderate con la tabella dati di esempio Big Class.
Names default to here( 1 );
// Open Data Table: big class.jmp
// → Data Table( "big class" )
dt = Open( "$SAMPLE_DATA/big class.jmp" );
colNamesList = dt << get column names( continuous, string );
sumdt = dt << summary(
Group( :Sex, :Age ),
max( colNamesList ),
Output Table( "Summary Max Values"),
Link to Original Data Table( 0 )
);
