Estoy tratando de guardar un script en mi tabla de datos que recreará una tabla que hice anteriormente. Este es un complemento que es bastante extenso e implica abrir/cerrar varias tablas diferentes, crear tablas de resumen, unir, actualizar y, al final, los únicos datos que necesitaré para los informes son una tabla simple de 2 columnas. Me gustaría que los usuarios pudieran ejecutar este complemento una vez, y si accidentalmente cierran la tabla resultante, no tendrán que volver a ejecutar el complemento porque habrá un script guardado en la tabla original que puede recrear la tabla final y la ventana de análisis.
¡Ojalá eso tenga sentido!
El problema con el que me encuentro es que la tabla final es un resumen de una de las muchas tablas creadas durante la secuencia de comandos del complemento. Entonces, si uso la función <
sum<<DELETE scripts=""></DELETE>
Este es un ejemplo de una cosa que he intentado que no funcionó. dt es la tabla original en la que me gustaría guardar este script. sum es la tabla que quiero recrear dentro del script.
¿Es esto posible?
Aquí hay un script simple que muestra una forma de hacer esto
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^)]\" )
)
);
¿Cómo guardo ese script en mi tabla?
Simplemente agregaría el código para guardar la tabla de resumen como otra secuencia de comandos, y luego en su secuencia de comandos principal simplemente haría que ejecutara la secuencia de comandos de la tabla que recrea la tabla de resumen.
La tabla de resultados de mi secuencia de comandos es esencialmente 2 columnas: "Posición" y "N filas". Esta tabla es un resumen de una tabla que se creó durante el complemento largo y no un resumen de las columnas de la tabla principal. No puedo usar ningún script que cree tablas usando datos de la tabla actual (como resumen, pila, etc.). De alguna manera necesito guardar los valores exactos en la tabla de resultados en un script que pueda guardar en mi tabla principal. Algo como esto:
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]
)
)
)
Pero no puedo encontrar la manera de hacerlo dentro de mi secuencia de comandos. No sé cómo obtener este script o guardarlo en la tabla principal.
Mi plan era obtener inmediatamente el script cuando la tabla de resultados se abrió por primera vez y guardarlo en un nuevo script de tabla en mi tabla principal, de esa manera, si la tabla de resultados estaba cerrada, podría volver a crearse usando el script de la tabla principal.
¿Eso tiene más sentido?
Hola @aallman ,
Estoy un poco confundido en cuanto a qué exactamente está intentando hacer, pero suena algo similar a algo que he hecho antes, donde necesitaba apilar la tabla de datos de origen y luego tabular la tabla de datos de salida, pero no quería tener que volver a escribir todo cuando Concatené algunos datos nuevos a la tabla de datos de origen.
Aquí hay un código de ejemplo donde tengo el script Stack escrito en el dt fuente.
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
);Y transferirá los scripts a la tabla de datos recién apilados. También guardé en el dt principal los scripts agrupados con el título "Ejecutar estos después de apilar", que también se transfieren a la tabla de datos recién apilados.
Me imagino que podría abordar su problema de manera similar.
¡Buena suerte!,
SD