Script para procesamiento de tablas JMP14Hola. ¿Podrías ayudarme a escribir un script que tome la tabla original y cree una nueva tabla a partir de ella? La tabla original tiene dos líneas por cada medición de temperatura de muestra. En la tabla de salida, usamos solo una fila por cada muestra y calculamos la cantidad de días entre las dos mediciones y el delta de temperatura.
Automatización y scriptingVentanasRe: Script para procesamiento de tablas JMP14¿Podrías proporcionar los datos de ejemplo como tabla JMP para que no tengamos que crearlos a partir de la imagen (los formatos pueden tener un gran impacto en el script)?
Re: Script para procesamiento de tablas JMP14Podrías agregar dos columnas de fórmula que calculen el máximo y el mínimo para cada muestra (temperatura y fecha):

O ejecute el siguiente script para obtener su tabla de ejemplo con columnas de fórmula.
New Table( "Example",
Add Rows( 8 ),
New Column( "Sample",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1, 1, 2, 2, 3, 3, 99, 99] )
),
New Column( "Temperature",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [199, 210, 201, 217, 200, 215, 199, 220] )
),
New Column( "Temp Diff",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
Col Maximum( :Temperature, :Sample )
-Col Minimum( :Temperature, :Sample )
)
),
New Column( "Date (ISO 9601 format)",
Numeric,
"Continuous",
Format( "yyyy-mm-dd", 10 ),
Input Format( "yyyy-mm-dd" ),
Set Values(
[3795552000, 3798576000, 3795552000, 3798748800, 3795552000, 3798662400,
3795552000, 3798921600]
)
),
New Column( "Date Diff",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula(
Date Difference(
Col Minimum( :"Date (ISO 9601 format)"n, :Sample ),
Col Maximum( :"Date (ISO 9601 format)"n, :Sample ),
"Day"
)
)
)
)
Y luego un resumen rápido te dará la tabla que buscabas:

Re: Script para procesamiento de tablas JMP14Hola Jarmo. Gracias por tu apoyo. Adjunto el archivo.
Re: Script para procesamiento de tablas JMP14Hola Paul. Gracias por tu idea. ¿Funcionará este enfoque si el delta de temperatura a veces es negativo y es crítico para mí?
Re: Script para procesamiento de tablas JMP14Vale. Lo he comprobado y no funciona. ¿Podemos utilizar otra fórmula para elegir la medición de temperatura de la fecha anterior y la posterior?
Re: Script para procesamiento de tablas JMP14Puedes utilizar las siguientes fórmulas
:Temperature - (Col Moving Average(:Temperature, 1, 1, 0, :Sample) * 2 - :Temperature)
y
(:Date - (Col Moving Average(:Date, 1, 1, 0, :Sample) * 2 - :Date)) / In Days(1)
para calcular los deltas.

Luego, cree una nueva tabla sin las filas 0 (no incluya fórmulas en esa tabla) o elimine las fórmulas y borre esas filas 0.

Creo que este script debería funcionar para JMP14 (no puedo probarlo porque no tengo acceso a él)
Names Default To Here(1);
dt = Open("$DOWNLOADS/source table.jmp");
dt << New Column("Time Delta", Numeric, "Continuous", Formula(
:Temperature - (Col Moving Average(:Temperature, 1, 1, 0, :Sample) * 2
- :Temperature)
));
dt << New Column("Temperature Delta", Numeric, "Continuous", Formula(
(:Date - (Col Moving Average(:Date, 1, 1, 0, :Sample) * 2 - :Date)) /
In Days(1)
));
dt << Select Where(:Temperature Delta == 0) << Invert Row Selection;
dt_subset = dt << Subset(
Copy formula(0),
Selected Rows(1),
Columns({"Sample", "Time Delta", "Temperature Delta"}),
Output Table("Deltas")
);
dt << Clear Select;Re: Script para procesamiento de tablas JMP14Gracias Jarmo. Déjame intentarlo.
Re: Script para procesamiento de tablas JMP14Jarmo, muchas gracias por tu solución. Está funcionando.
Pero tengo dos preguntas más:
1. ¿Podrías explicarme qué hace la fórmula para calcular la media móvil? Solo quiero entender la lógica de tu enfoque...
2. Acabo de notar que si la primera línea corresponde a una fecha posterior, se obtiene un valor negativo del delta de tiempo. El delta de tiempo siempre debe ser positivo. ¿Funcionará si ordeno la tabla de origen desde el principio para que el script funcione correctamente?
Re: Script para procesamiento de tablas JMP14La ordenación debería funcionar, pero también podría considerar otras fórmulas si ese es el caso (si el orden es siempre posterior o anterior). Utilizo la media móvil de columnas, de modo que puedo acceder al valor de la fila anterior para el grupo.