我正在嘗試分析我公司生產的設備的子組件之一的數據。 不幸的是,實際有用的數據保存在一個表中,該表被壓縮為數據庫中的單個單元(請參見下文)。 有沒有辦法在保留所有其他數據的同時將此數據分解為單獨的列和行(例如,為所有新的數據行分配相同的序列號)?
謝謝!
大衛

您可以採用該列的值11.000,0.00,0.050,0.001,PASS,11.047,-156,並使用“列”>“實用程序”>“文本到列”來為該列中的不同內容創建單獨的列。
使用定界符-
這將為您提供像這樣的列:
11,000 0.00 0.050 0.001通過..等
如果您想對其進行更多或不同的分解,可以使用不同的定界符或空格。
希望這是您想要做的。
曼迪
謝謝你的建議! 我在發布此消息之前就了解了“文本到列”實用程序,但是每行創建了84個新列,並且失去了我要使用的列表數據的功能。 我構建了一個示例,希望將輸出內容添加到原始帖子中。
謝謝!
首先,無論誰創建了這樣的表格,都應該...好吧...我可以想到一些適當的懲罰措施。
幸運的是,我認為JMP將使其相對容易處理。
首先,使用列->實用程序->文本到列.. 。如@Mandy_JMP建議,但使用NEWLINE作為分隔符。

這應該為您的FunctionalTextTables列中的每一行提供一個新列。

現在,使用表格->堆棧來堆疊所有FunctionalTestTable#(即FunctionalTestTable 1,FunctionalTestTable 2等)列。

這將為您為每一列提供一行。

現在,您可以使用文字轉欄...再次,這次以逗號(,)作為分隔符。

現在,您將獲得各個值的列。

現在,只需複制和粘貼列名稱即可。 這裡有個提示可以幫助您列名讓您失望嗎? 試試這個。然後,使用Cols->標準化屬性將列的數據類型更改為適當的數值。
您說您有一個14k的數據庫。 它們是數據庫中14k個不同的表還是一個表的14k行? 希望後者,因為您應該能夠使用File-> Database-> Open Table將所有內容放入一個JMP數據表中。
如果確實有14k個不同的表,則需要使用表格->連接將它們全部放入JMP的一個表中,但是在確認數據庫中的橋之後,讓我們越過該橋。
而不管,選擇匹配的單元格是另一個可以幫助您清理的工具。 在取得一些進展之後,我將在後續帖子中進行解釋。
嘿傑夫,
我已經和負責測試的工程師說過話,您不用擔心:P。 不幸的是,這是14k個單獨的表,每個表都有自己的單元格和標題,每個表中都有重複的標題。 我附上了3張圖片(14k ...)。 我將嘗試您的方法,讓您知道它的運行方式!

你好@dpeyer ,
這是一個加載項,您可以調用該加載項來導入數據。
或者,您可以運行腳本將文本文件導入JMP。
我基於附加的示例文本文件進行導入。
腳本和加載項都可以更新,以將類似文件連接到單個文件中。
乾杯,
斯坦
嘿,傑夫,很完美! 我有一個後續問題。 有沒有一種方法可以將所有這些步驟另存為腳本,這樣我就不必在每次需要提取此數據時都重做它們? 我嘗試將其保存為會話腳本,但這並沒有保存任何數據中斷。
我很高興聽到它已經整理好數據供您分析。
是的,您可以創建一個腳本來為您執行此操作。 這將需要一些工作,但JMP會為您創建其中的一些工作。
以下是有關操作方法的概述。
JMP 15不會捕獲“文本到列...”命令,但是編寫起來很簡單:
// Text to columns
Data Table( "Community330288.jmp" ) <<
Text to Columns( columns( :FunctionalTestTable ), Delimiters( NEWLINE ) );
下一步是堆棧命令。 JMP為此將JSL放在結果表中名為Source的腳本中。

右鍵單擊它,然後選擇“編輯”,您將獲得要復制和粘貼的腳本:
stacked_data = Data Table( "Community330288.jmp" ) << Stack(
columns(
:FunctionalTestTable 1,
:FunctionalTestTable 2,
:FunctionalTestTable 3,
:FunctionalTestTable 4,
:FunctionalTestTable 5,
:FunctionalTestTable 6,
:FunctionalTestTable 7,
:FunctionalTestTable 8,
:FunctionalTestTable 9,
:FunctionalTestTable 10,
:FunctionalTestTable 11,
:FunctionalTestTable 12,
:FunctionalTestTable 13,
:FunctionalTestTable 14
),
Source Label Column( "Label" ),
Stacked Data Column( "Data" ),
Name( "Non-stacked columns" )(Keep( :StationID, :StartDateTime, :Serial ))
)
下一步是使用逗號作為分隔符重複“文本到列”:
// Text to columns
stacked_data << Text to Columns( columns( :Data ), Delimiters( "," ) );
JMP不會記錄的另一件事是重命名數據的第一行中的列。 重命名可以編寫腳本,但您必須自己編寫。
如果您知道列數將始終相同(在本例中為7),則可以對其進行硬編碼。 如果列數是可變的,那麼您將不得不做更多的工作。 讓我知道是否是這種情況,這是我們可以幫助您跨越的另一座橋樑。
for(i=1, i<=7, i++,
column("Data " || char(i))<<SET name=""></SET>
最後,您需要選擇包含列名的行並將其刪除。 我已經硬編碼了列名和下面的值。 如果它們是可變的...那麼,將只需要多做一些工作。
stacked_data << Select Where( :Pressure == "Pressure" ) << Delete Rows;
最後,將一些列更改為數值。 您需要為每列重複此操作。
:Pressure << set data type(Numeric);
希望對您有所幫助。
不斷提出問題。