我們如何使用 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 )
);