テーブル変換とタイムスタンプの変換を支援しますか?センサーからデータテーブルを取得しましたが、正しくフォーマットする方法がよくわかりません。 電圧測定値を出力する光センサーです。
テーブルの最初の列は測定された波長で、次にデータを測定する時間インスタンスごとに 100 以上の列があります。
これを正しく変換またはピボットするにはどうすればよいでしょうか? Table Transpose だけが正しいアクティビティでしょうか?
次に、生のタイムスタンプを使用可能な時系列に変換する方法についてのアドバイスをお願いします。 こんな感じで出てきます。
DD-MM-YYYTHH:MM:SS.###Z
これを X 軸としてプロットするために使用可能な timeseries 値に変換するにはどうすればよいでしょうか? 1000分の1秒単位、0.1秒単位です。
おまけに、最小値と最大値を見つけて時間を 0-->最大値になるように正規化するにはどうすればよいでしょうか?
...
14-07-2020T22:47:31.400Z
14-07-2020T22:47:31.500Z
14-07-2020T22:47:31.600Z
14-07-2020T22:47:31.700Z
14-07-2020T22:47:31.800Z
14-07-2020T22:47:31.900Z
...
データのブレンディングとクリーンアップRe: テーブル変換とタイムスタンプの変換を支援しますか?ありがとうジェフ。 最終的な方程式に関するあなたの意見は素晴らしく、真夜中をまたぐランニングについての心配はなくなりました。
Re: テーブル変換とタイムスタンプの変換を支援しますか?
@aliegner1書きました:
タイムスタンプに関する質問: これを生の期間に変換するにはどうすればよいですか? 「日付の差」の数式があるようですが、2 つの列が必要なようです。 これを 0.000 秒 --> 最大時間から始まる時系列にするにはどうすればよいですか?
さらに先に進む前に、ここでこの質問を明確にする必要があると思います。@txnelsonこれは、日時値の日付部分を削除したいと解釈されます。 それはあなたが望んでいることではないと思います。
これで、次の列ができました。日時値。 この列は時系列として使用できますが、0 から始まるわけではありません。
代わりに、単純な減算と簡単に実行できる、データ テーブルの連続する行間の時間差をカウントする列が必要な場合は、行の添字付け。

ここでいくつか指摘しておきたいことがあります。
- 最初の行では値が 0 に設定されます。
- 秒単位の値に興味があるので、Date Difference() 関数を使用する必要はありません。 したがって、単純な引き算が機能します。
- のため浮動小数点演算これらの値の差は正確には 10 分の 1 秒単位ではありません。 この列を 10 分の 1 秒単位で表示するように書式設定しました。つまり、小数点以下 1 桁の固定小数点を表示します。
- 最後に、おそらくより複雑なのは、最初の質問では複数の波長があると述べていたことです。 このタイム シーケンスを波長ごとに 0 から再開しますか? もしそうなら、それは問題ではありません。 数式をいくつか変更するだけです。

- ここで、数式は行 1 をチェックします。またはラムダ値が前のラムダとは異なる場合 ( Lag()関数) シーケンスを 0 に設定します。
- また、Lag() を使用して前の行のシーケンスの値を取得し、現在の行と前の行の間の時間値の差を加算します。
これが明確になり、良い方向性を示すのに役立つことを願っています。
Re: テーブル変換とタイムスタンプの変換を支援しますか?あなたが尋ねている質問を考えると、私の最初の答えは、少し読む必要があるということです。「JMP の検出」ドキュメントと「JMP の使用」ドキュメントの両方を読む必要があります。どちらも、JMP ドキュメント ライブラリの [ヘルプ] プルダウン メニューから入手できます。
日のオーバーフローの問題に関しては、Date Difference() が 0 日より大きいかどうかを確認し、そうでない場合は必要に応じて時間を計算する必要があります。
Lamda をキャラクターに変更する必要はありません。ただし、データ型を変更することで簡単にそれを行うことができます。または、単にモデリング タイプを順序または公称に変更することもできます。
:Lamda << Data Type(character);
// or
:Lamda<<MODELING type=""></MODELING>
Re: テーブル変換とタイムスタンプの変換を支援しますか?すごいジム!
あなたの考えを知るためにいくつかの質問をしてください:
- 真夜中を超えて翌日に及ぶランニングを防ぐにはどうすればよいですか? Time of Day を使用して絶対時刻を取得するか、ゼロから始まるように正規化すると、2 日間にわたる実行の影響を受けます。
- Lambda 列を文字列に変換することについて考えていますか? これは本質的にラベルなので、数値であるべきではありませんね。 いくつかの波長で測定し、データと時間をプロットします。
- 新しく作成したデータテーブルに元のファイルを埋め込むにはどうすればよいですか? 最初の dt = --> をファイルを開くダイアログに変更しました。

Re: テーブル変換とタイムスタンプの変換を支援しますか?データを分析形式に変換する際に役立つ小さなスクリプトを次に示します。 サンプル データ テーブルを取得して、以下を作成します。

names default to here(1);
dt=current data table();
// Get the column names from the data table
colNames = dt << get column names;
// Remove Lamda from the list
remove from(colNames,1,1);
// Stack the data
dtStack = dt << Stack(
columns(
colNames
),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Output Table( "Stacked" )
);
// Create a new JMP DateTime column
dtStack << New Column( "Timestamp",
Numeric,
"Continuous",
Format( "d/m/y h:m:s", 26, 3 ),
Input Format( "d/m/y h:m:s", 0 ),
Formula( Informat( Word( 1, :Label, "Z" ), "d/m/y h:m:s" ) )
);
// Remove formula to convert column to static values
dtStack:Timestamp << delete formula;
// Create the Time variable
dtstack << New Column( "Time",
Numeric,
"Continuous",
Format( "hr:m:s", 17, 3 ),
Input Format( "hr:m:s", 0 ),
Formula( Time Of Day( :Timestamp ) )
);
// Get rid of no longer needed "Label" column
dtStack << delete columns( "Label" );
Re: テーブル変換とタイムスタンプの変換を支援しますか?添付のサブセット (スタック済み) を参照してください。
時刻はわかりますが、実行が真夜中を超えて日が変わった場合の状況に注意する必要がありますか? [time of day() -col minimum(time of day())] を実行してゼロにします。
Re: テーブル変換とタイムスタンプの変換を支援しますか?タイム スタンプ (JMP 日付/時刻) 列を単なる時刻値に変換するには、Time of Day() 関数を使用します。 これは事実上、前の午前 0 時から測定時刻までの秒数を返します。
列名が日々変化する場合のスタッキングについては、データ テーブル内の列のリストを取得し、そのリストを Stack Platform ステートメントに適用するのが簡単です。 列名を取得するためにデータテーブルに渡すメッセージは、dt << get column names() です。
サンプル データ テーブルまたはデータのスプレッドシートを添付していただけますか。 入力データの詳細を確認するのは非常に困難であり、結果的に偽の指示を伝える可能性があります。Re: テーブル変換とタイムスタンプの変換を支援しますか?ジムとジェフ、ありがとう、うまくいきました! 私は今 word() について読んでいます。
タイムスタンプに関する質問: これを生の期間に変換するにはどうすればよいですか? 「日付の差」の数式があるようですが、2 つの列が必要なようです。 これを 0.000 秒 --> 最大時間から始まる時系列にするにはどうすればよいですか?
stack コマンドのスクリプト作成に関する質問: スクリプトを見ると、すべての列に一意の行があります。次回このデータ ファイルをプルするときにこれを動的にするにはどうすればよいですか?
Data Table( "Sheet1" ) << Stack(
columns(
:Name( "14-07-2020T22:47:31.400Z" ),
:Name( "14-07-2020T22:47:31.500Z" ),
:Name( "14-07-2020T22:47:31.600Z" ),
....for every column...
),
Source Label Column( "TimeStamp" ),
Stacked Data Column( "data" ),
Output Table( "sensor table" )
)
Re: テーブル変換とタイムスタンプの変換を支援しますか?ジェフ、
私の年齢が現れているようです...あなたはまた答えで私を打ち負かしました。
Re: テーブル変換とタイムスタンプの変換を支援しますか?データに関しては、列の積み重ねを検討することをお勧めします。このフォームにより、分析用のさらに多くの JMP ツールが提供されます。
タイムスタンプの問題に関しては、「TS」という入力列を取得し、それを JMP 日付/時刻列に変換するスクリプトの例を示します。
Names default to here(1);
dt = New Table( "Example",
Add Rows( 6 ),
New Column( "TS",
Character,
"Nominal",
Set Values(
{"14-07-2020T22:47:31.400Z", "14-07-2020T22:47:31.500Z",
"14-07-2020T22:47:31.600Z", "14-07-2020T22:47:31.700Z",
"14-07-2020T22:47:31.800Z", "14-07-2020T22:47:31.900Z"}
)
)
);
dt << New Column( "Column 2",
Numeric,
"Continuous",
Format( "d/m/y h:m:s", 26, 3 ),
Input Format( "d/m/y h:m:s", 0 ),
Formula( Informat( Word( 1, :TS, "Z" ), "d/m/y h:m:s" ) )
);Re: テーブル変換とタイムスタンプの変換を支援しますか?必要なのはそれだけだと思いますテーブル -> スタック時間列を Stack Columns ロールに配置します。
最終的には、波長と時間の 2 つの列が表示されます。
タイムスタンプを JMP 日時列に変換する場合は、言葉()そしてインフォーマット()ここに行きます:

参考文献:
数式エディター関数を 1 つだけ学習する場合は、Word() がその関数です。
JMP での日付、時刻、日時および期間の使用