表处理脚本 JMP14你好。你能帮我写一个脚本,把原始表格变成一个新表格吗?原始表格中每个样品温度测量值有两行。在输出表中,我们每个样品只使用一行,并计算两次测量之间的天数和温度增量。
自动化和脚本视窗回复:表格处理脚本 JMP14您能否以 JMP 表的形式提供示例数据,以便我们不必从图像中创建它(格式会对脚本产生很大影响)
回复:表格处理脚本 JMP14您可以添加两个公式列来计算每个样本的最大值 - 最小值(温度和日期):

或者运行下面的脚本来获取带有公式列的示例表。
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"
)
)
)
)
然后,快速摘要将为您提供您所追求的表格:

回复:表格处理脚本 JMP14嗨,Jarmo。感谢您的支持。请参阅附件。
回复:表格处理脚本 JMP14嗨,保罗。谢谢你的想法。如果温度增量有时为负,并且这对我来说很关键,这种方法会起作用吗?
回复:表格处理脚本 JMP14好的。我检查过了,它不起作用。我们可以使用其他公式来从较晚的日期和较早的日期中选择温度测量值吗?
回复:表格处理脚本 JMP14您可以使用以下公式
:Temperature - (Col Moving Average(:Temperature, 1, 1, 0, :Sample) * 2 - :Temperature)
和
(:Date - (Col Moving Average(:Date, 1, 1, 0, :Sample) * 2 - :Date)) / In Days(1)
计算增量。

然后创建没有 0 行的新表(不要在该表中包含公式)或者删除公式并删除那 0 行。

我认为这个脚本应该适用于 JMP14(我无法测试它,因为我无权访问它)
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;回复:表格处理脚本 JMP14谢谢你,贾莫。让我尝试一下。
回复:表格处理脚本 JMP14Jarmo,非常感谢您的解决方案。它正在发挥作用。
但我还有两个问题:
1. 您能解释一下移动平均计算公式的作用吗?我只是想了解您的方法的逻辑……
2. 我刚刚注意到,如果第一行使用较晚的日期,则时间增量为负数...时间增量应始终为正数。如果我从一开始就对源表进行排序,您的脚本是否能正常工作?
回复:表格处理脚本 JMP14排序应该可行,但如果情况确实如此(如果顺序总是较晚 - 较早),您也可以考虑其他公式。我使用 Col Moving Average,因此我可以访问该组的较早行中的值。