Sto cercando di salvare uno script nella mia tabella di dati che ricreerà una tabella che ho creato in precedenza. Questo è un componente aggiuntivo piuttosto esteso e comporta l'apertura/chiusura di diverse tabelle, la creazione di tabelle di riepilogo, l'unione, l'aggiornamento e alla fine gli unici dati di cui avrò bisogno per i rapporti sono una semplice tabella a 2 colonne. Vorrei che gli utenti fossero in grado di eseguire questo componente aggiuntivo una volta e, se chiudono accidentalmente la tabella risultante, non dovranno eseguire nuovamente il componente aggiuntivo perché ci sarà uno script salvato nella tabella originale che può ricreare la tabella finale e la finestra di analisi.
Spero che abbia senso!
Il problema che sto riscontrando è che la tabella finale è un riepilogo di una delle tante tabelle create durante lo script del componente aggiuntivo. Quindi, se utilizzo la funzione <
sum<<DELETE scripts=""></DELETE>
Questo è un esempio di una cosa che ho provato che non ha funzionato. dt è la tabella originale in cui vorrei salvare questo script. sum è la tabella che voglio ricreare all'interno dello script.
È possibile anche questo???
Ecco un semplice script che mostra un modo per farlo
names default to here(1);
dt=open("$SAMPLE_DATA\big class.jmp");
dtSum = dt << Summary(
Group( :sex ),
Mean( :height ),
Freq( "None" ),
Weight( "None" ),
link to original data table(0)
);
Eval(
Parse(
Eval Insert( "\[dt << New Table Script("Summary Table Script", ^dtSum << get script^)]\" )
)
);
Come faccio a salvare quello script sul mio tavolo?
Vorrei semplicemente aggiungere il codice per salvare la tabella di riepilogo come un altro script, quindi nel tuo script principale basta eseguire lo script della tabella che ricrea la tabella di riepilogo.
La tabella dei risultati del mio script è essenzialmente di 2 colonne: "Position" e "N Rows". Questa tabella è un riepilogo di una tabella creata durante il lungo componente aggiuntivo e non un riepilogo di alcuna colonna nella tabella principale. Non posso utilizzare alcuno script che crei tabelle utilizzando i dati della tabella corrente (come riepilogo, stack, ecc.). Devo in qualche modo salvare i valori esatti nella tabella dei risultati in uno script che posso salvare nella mia tabella principale. Qualcosa come questo:
New Table( "Positions of'n-1 base'",
Add Rows( 32 ),
New Column( "Position",
Numeric,
"Nominal",
Format( "Best", 10 ),
Set Values(
[1, 2, 3, 6, 8, 9, 11, 16, 18, 21, 23, 25, 26, 27, 28, 29, 30, 31, 32,
34, 35, 36, 37, 38, 39, 40, 41, 46, 48, 63, 65, 68]
)
),
New Column( "N Rows",
Numeric,
"Continuous",
Format( "Fixed Dec", 20, 0 ),
Set Values(
[13, 52, 65, 52, 65, 65, 65, 52, 52, 65, 52, 31, 28, 23, 13, 21, 14, 17,
9, 5, 4, 56, 1, 4, 5, 3, 55, 65, 65, 52, 13, 13]
)
)
)
Ma non riesco a capire come farlo all'interno della mia sceneggiatura. Non so come ottenere questo script o salvarlo nella tabella principale.
Il mio piano era di ottenere immediatamente lo script quando la tabella dei risultati si apriva per la prima volta e salvarla in un nuovo script di tabella sulla mia tabella principale, in questo modo se la tabella dei risultati fosse stata chiusa, avrebbe potuto essere ricreata utilizzando lo script della tabella principale.
Ha più senso?
CIAO @aallman ,
Sono un po' confuso su cosa esattamente stai tentando di fare, ma suona in qualche modo simile a qualcosa che ho fatto prima, dove avevo bisogno di impilare la tabella dei dati di origine e quindi tabulare la tabella dei dati di output, ma non volevo dover riscrivere tutto quando Ho concatenato alcuni nuovi dati alla tabella dei dati di origine.
Ecco un esempio di codice in cui ho scritto lo script Stack nel sorgente dt.
Data Table( "Analysis" ) << Stack(
columns(
:X1,
:X2,
:X3,
:X4,
:X5,
:X6
),
Source Label Column( "Test Apparatus" ),
Stacked Data Column( "Data" )
);
Current Data Table() << Set Name( "Data Stack" ) <<
New Script(
"Fit Y by X of Data by Source",
Oneway(
Y( :Data ),
X( :Source ),
Means( 1 ),
Mean Diamonds( 1 ),
By( :Test Apparatus )
)
);
Data Table( "Data Stack" ) << New Column( "Date-Time",
"Ordinal",
Formula( :Date + :Time ),
Format( "m/d/y h:m:s" )
);
Data Table( "Data Stack" ) << Group Scripts(
"Run these after stacking",
{"Tabulate by Lot (run after stacking)",
"Tabulate by Apparatus (run after stacking)"}
);
Data Table( "Data Stack" ) << Move Script Group(
"Run these after stacking",
to last
);E riporterà gli script nella tabella dati appena impilata. Ho anche salvato nel dt principale gli script raggruppati con il titolo "Esegui questi dopo l'impilamento", che vengono anche riportati nella tabella dei dati appena impilati.
Immagino che potresti essere in grado di affrontare il tuo problema in modo simile.
Buona fortuna!,
DS