幫忙做表轉換和轉換時間戳?所以我從傳感器獲得了一個數據表,我不太確定如何正確格式化。 它是一個輸出電壓讀數的光傳感器。
表中的第一列是測量的波長,然後針對每個測量數據的時間實例有 100 多列。
我該如何正確地轉變或調整這一點? 僅表轉置是正確的活動嗎?
接下來,有關如何將原始時間戳轉換為可用時間序列的建議? 它看起來像這樣。
DD-MM-YYYYTHH:MM:SS.###Z
我該怎麼做才能將其轉換為可用的時間序列值以繪製為 x 軸? 精確到千分之一秒,增量為 0.1 秒。
另外,如何找到最小值和最大值並將時間標準化為 0-->max?
...
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
...
數據混合和清理回复:幫忙做一個表轉換和轉換時間戳?謝謝杰夫。 您對最終方程的輸入非常好,消除了對跨越午夜跑步的擔憂。
回复:幫忙做一個表轉換和轉換時間戳?
@aliegner1寫道:
關於時間戳的問題:如何將其轉換為原始持續時間? 我看到有“日期差異”公式,但看起來它需要兩列。 我如何使它成為一個從 0.000s --> max time 開始的時間序列?
在我們進一步討論之前,我認為我們需要先澄清這個問題。@tx尼爾森將其解釋為您想要刪除日期時間值的日期部分。 我不認為這就是你想要的。
您現在已經有一列日期時間值。 該列可以用作時間序列,只是不會從 0 開始。
相反,如果您希望使用一列來計算數據表中連續行之間的時間差,則可以通過簡單的減法輕鬆完成行下標。

我在這裡有幾點需要指出:
- 第一行中的值設置為 0。
- 我不需要使用 Date Difference() 函數,因為我對以秒為單位的值感興趣。 所以,簡單的減法就可以了。
- 因為浮點運算這些值的差異並不精確到十分之一秒。 我已將此列格式化為以十分之一秒顯示,即帶有 1 位小數的固定十進制。
- 最後,但也許更複雜的是,你最初的問題說你有多個波長。 您想為每個波長在 0 處重新啟動此時間序列嗎? 如果是這樣,那就不是問題了。 只需對公式進行一些更改即可。

- 現在公式檢查第 1 行或者使 lambda 值與之前的 lambda 不同(使用Lag() 函數) 將序列設置為 0。
- 它還使用 Lag() 獲取前一行中的序列值,並添加當前行和前一行之間的時間值差。
我希望這有助於澄清並提供一個好的方向。
回复:幫忙做一個表轉換和轉換時間戳?鑑於您提出的問題,我的第一反應是您需要做一些閱讀。您需要閱讀發現 JMP 和使用 JMP 文檔。兩者均可在 JMP 文檔庫的“幫助”下拉菜單中找到。
關於日期溢出問題......您需要做的是檢查 Date Difference() 是否大於 0 天,如果不大於 0 天,則根據需要計算時間。
Lamda 不必更改為角色。但可以通過更改數據類型輕鬆完成此操作。或者您可以簡單地將建模類型更改為序數或名義。
:Lamda << Data Type(character);
// or
:Lamda<<MODELING type=""></MODELING>
回复:幫忙做一個表轉換和轉換時間戳?太棒了吉姆!
提幾個問題看看你的想法:
- 如何防止跑步從午夜持續到第二天?使用一天中的時間來獲取絕對時間或將其標準化為從零開始將受到跨越 2 天的運行的影響。
- 關於將 Lambda col 轉換為字符列的想法? 它本質上是一個標籤,所以它不應該是數字,對嗎? 它在幾個波長 t 下進行測量,然後繪製數據與時間的關係圖。
- 如何將原始文件嵌入到新創建的數據表中? 我將最初的 dt = --> 更改為文件打開對話框。

回复:幫忙做一個表轉換和轉換時間戳?這是一個小腳本,可以幫助您將數據轉換為分析格式。 它採用您的示例數據表並創建:

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" );
回复:幫忙做一個表轉換和轉換時間戳?請參閱附加子集(預堆疊)。
我獲取了一天中的時間,但隨後需要防範午夜跑步和日期變化時的情況? 我通過執行 [time of day() - col minus(time of day()) 將其歸零
回复:幫忙做一個表轉換和轉換時間戳?要將時間戳 (JMP 日期/時間) 列轉換為時間值,請使用 Time of Day() 函數。 它有效地返回從前一個午夜到測量時間的秒數。
關於當列名每天都在變化時的堆疊……獲取數據表中的列列表,然後將該列表應用到 Stack Platform 語句中是一件簡單的事情。 傳遞到數據表以檢索列名稱的消息是 dt << get column names()。
是否可以附上您的數據的示例數據表或電子表格。 查看輸入數據的細節非常困難,這可能會導致傳遞虛假的方向。回复:幫忙做一個表轉換和轉換時間戳?謝謝吉姆和傑夫,他們工作得很好! 我現在正在閱讀 word() 。
關於時間戳的問題:如何將其轉換為原始持續時間? 我看到有“日期差異”公式,但看起來它需要兩列。 我如何使它成為一個從 0.000s --> max time 開始的時間序列?
關於編寫堆棧命令腳本的問題:查看腳本,它的每一列都有一個唯一的行......如何在下次拉取此數據文件時使其動態化?
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" )
)
回复:幫忙做一個表轉換和轉換時間戳?傑夫,
我想我的年齡已經暴露了……你再次讓我知道了答案。
回复:幫忙做一個表轉換和轉換時間戳?關於您的數據,我建議您研究一下堆疊列。該表格將為您提供更多 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" ) )
);回复:幫忙做一個表轉換和轉換時間戳?我想你所需要的只是表->堆棧將時間列放入堆棧列角色中。
您最終應該有兩列:波長和時間。
至於將時間戳轉換為 JMP 日期時間列,單詞()和信息()我去這裡嗎:

進一步閱讀:
如果您只學習一種公式編輯器函數,Word() 就是其中之一
在 JMP 中使用日期、時間、日期時間和持續時間