我们如何使用 JSL 根据时间过滤数据并取平均值?我捕获了特定时间段内的数据。请参阅以下表格快照(附件相同):
| 时间戳 | A | B | C |
| 0.001 | 10.005 | 450.4451 | 428.9093 |
| 0.002 | 10.01 | 450.8904 | 429.0295 |
| 0.003 | 10.015 | 451.336 | 429.0177 |
| 0.004 | 10.02 | 451.7818 | 428.9279 |
| 0.005 | 10.025 | 452.2278 | 428.8491 |
C 列的图如下所示:

我需要过滤第 1、2 和 3 节中的行并找到它们的平均值。
每个部分跨越 30 秒,持续时间根据时间戳列计算,并且每个部分之间有 20 秒的间隔。
最终结果表应如下:
| 部分 | 平均值(A) | 平均值(B) | 平均值(C) |
| 1 | 10.005 | 450.4451 | 428.9093 |
| 2 | 10.01 | 450.8904 | 429.0295 |
| 3 | 10.015 | 451.336 | 429.0177 |
您能否建议我们如何过滤第 1、2 和 3 节中的行并使用脚本找到它们的平均值。
质量与工艺工程回复:我们如何根据时间过滤数据并使用 JSL 取平均值?非常感谢您指导我找到正确的资源,我一定会阅读文档。回复:我们如何根据时间过滤数据并使用 JSL 取平均值?在我提供的示例中,Section 列被创建为 Numeric 列。数字列的值必须是有效数字。然而,将列设为字符列是一件简单的事情,然后 Section 的值可以是任何你想要的。
names default to here(1);
dt=current data table();
dt << new column("Section",
ordinal,character,
formula(
If( 0 <= :TimeStamp <= 30,
"Interval_1",
50 <= :TimeStamp <= 80,
"Interval_2",
100 <= :TimeStamp <= 130,
"Interval_3"
)
)
);
我强烈建议您花时间阅读 JMP 文档库中的发现 JMP 和使用 JMP 文档,该文档位于“帮助”下拉菜单下
回复:我们如何根据时间过滤数据并使用 JSL 取平均值?是否可以为每个部分提供一些有意义的名称,而不是 1、2 和 3。 例如,我们可以将其命名为 interval_1、interval_2 等吗?
我试过这个但是当我尝试时代码没有运行
回复:我们如何根据时间过滤数据并使用 JSL 取平均值?这是我会怎么做。它与您的结果不匹配,但它确实遵循您指示的方向,根据时间戳值 0-30 = Section 1、50-80 = Section 2、100-130 = Section 3 计算 Section

names default to here(1);
dt=current data table();
dt << new column("Section",
ordinal,
formula(
If( 0 <= :TimeStamp <= 30,
1,
50 <= :TimeStamp <= 80,
2,
100 <= :TimeStamp <= 130,
3
)
)
);
dt << Summary(
Group( :Section ),
Mean( :A ),
Mean( :B ),
Mean( :C ),
Freq( "None" ),
Weight( "None" ),
Link to original data table( 0 )
);