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 の行をフィルターし、その平均を見つける方法を教えてください。
品質およびプロセスエンジニアリングRe: 時間に基づいてデータをフィルタリングし、JSL を使用して平均を取るにはどうすればよいですか?適切なリソースに私を導いてくれてありがとう、私は間違いなくドキュメントを読みます.Re: 時間に基づいてデータをフィルタリングし、JSL を使用して平均を取るにはどうすればよいですか?私が提供した例では、セクション列は数値列として作成されました。数値列の値は有効な数値でなければなりません。ただし、列を Character 列にするのは簡単で、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の使用に関するドキュメントを読むことを強くお勧めします。
Re: 時間に基づいてデータをフィルタリングし、JSL を使用して平均を取るにはどうすればよいですか?1、2、3 の代わりに、各セクションに意味のある名前を付けることは可能ですか? たとえば、interval_1、interval_2 などの名前を付けることができます。
これを試しましたが、試してみるとコードが実行されません
Re: 時間に基づいてデータをフィルタリングし、JSL を使用して平均を取るにはどうすればよいですか?これが私がそれを行う方法です。あなたの結果とは一致しませんが、あなたが示した指示に従っており、0-30 = セクション 1、50-80 = セクション 2、100-130 = セクション 3 の TimeStamp 値に基づいてセクションを計算します。

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 )
);