單格表分組我正在嘗試分析我公司生產的設備的一個子組件的數據。 不幸的是,實際有用的數據保存在一個表格中,該表格被壓縮為數據庫中的單個單元格(見下文)。 有沒有辦法將此數據分解為單獨的列和行,同時保留所有其他數據(例如,為所有新數據行分配相同的序列號)? 最終目標是獲得類似於下面的 Excel 表格(我必須手工製作:P)的內容,其中包含每行的所有序列號、站 ID 等數據。
前:
| 站號 | 開始日期時間 | 串行 | 功能測試台 |
| 1223 | 2020年1月1日 | ASDF1234 | 壓力、流量設置、流量方差、流量值、流量結果、UUT dP、步長位置 11.000,0.00,0.050,0.001,通過,11.047,-156 10.000,3.00,0.250,3.097,通過,9.984,-119 10.000,5.00,0.250,4.933,通過,9.990,-103 10.000,10.00,0.500,9.847,通過,9.973,-64 10.000,100.00,5.000,101.048,通過,9.968,525 7.000,3.00,0.250,2.957,通過,6.983,-114 7.000,5.00,0.250,4.885,通過,6.988,-95 7.000,10.00,0.500,9.822,通過,6.990,-48 7.000,80.00,4.000,80.916,通過,6.981,518 4.000,3.00,0.250,3.078,通過,3.981,-101 4.000,5.00,0.250,5.110,通過,3.988,-76 4.000,10.00,0.500,9.980,通過,3.987,-15 4.000,50.00,2.500,52.123,通過,3.993,447 |
後:
| 站號 | 開始日期時間 | 串行 | 壓力 | 流量設定 | 流量方差 | 流量值 | 流量結果 | 待測物dP | 步進位置 |
| 1223 | 2020年1月1日 | ASDF1234 | 11.000 | 0.00 | 0.050 | 0.001 | 經過 | 11.047 | -156 |
| 1223 | 2020年1月1日 | ASDF1234 | 10.000 | 3.00 | 0.250 | 3.097 | 經過 | 9.984 | -119 |
| 1223 | 2020年1月1日 | ASDF1234 | 10.000 | 5.00 | 0.500 | 4.933 | 經過 | 9.990 | -103 |
| 1223 | 2020年1月1日 | ASDF1234 | 10.000 | 10:00 | 5.000 | 9.847 | 經過 | 9.973 | -64 |
| 1223 | 2020年1月1日 | ASDF1234 | 10.000 | 100.00 | 0.250 | 101.048 | 經過 | 9.968 | 第525章 |
| 1223 | 2020年1月1日 | ASDF1234 | 7.000 | 3.00 | 0.250 | 2.957 | 經過 | 6.983 | -114 |
| 1223 | 2020年1月1日 | ASDF1234 | 7.000 | 5.00 | 0.250 | 4.885 | 經過 | 6.988 | -95 |
| 1223 | 2020年1月1日 | ASDF1234 | 7.000 | 10:00 | 0.500 | 9.822 | 經過 | 6.990 | -48 |
| 1223 | 2020年1月1日 | ASDF1234 | 7.000 | 80.00 | 4.000 | 80.916 | 經過 | 6.981 | 518 |
| 1223 | 2020年1月1日 | ASDF1234 | 4.000 | 3.00 | 0.250 | 3.078 | 經過 | 3.981 | -101 |
| 1223 | 2020年1月1日 | ASDF1234 | 4.000 | 5.00 | 0.250 | 5.110 | 經過 | 3.988 | -76 |
| 1223 | 2020年1月1日 | ASDF1234 | 4.000 | 10:00 | 0.500 | 9.980 | 經過 | 3.987 | -15 |
| 1223 | 2020年1月1日 | ASDF1234 | 4.000 | 50.00 | 2.500 | 52.123 | 經過 | 3.993 | 第447章 |
謝謝!
大衛

數據存取回复:單單元格表突破@傑夫·珀金森我希望您在 JMP 16 中做到了這一點...
回复:單單元格表突破我很高興聽到它已將數據整理好供您分析。
是的,您可以創建一個腳本來為您執行此操作。 這需要一些工作,但 JMP 會為您創建一些工作。
以下是如何執行此操作的概述。
JMP 15 不會捕獲 Text to Columns... 命令,但編寫語法非常簡單:
// 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);
我希望這有幫助。
繼續提出問題。
回复:單單元格表突破嘿,傑夫,效果非常好! 我確實有一個後續問題。 有沒有辦法將所有這些步驟保存為腳本,這樣我就不必每次需要提取這些數據時都重做它們? 我嘗試將其保存為會話腳本,但這並沒有保存任何數據突破。
回复:單單元格表突破你好@dpeyer ,
您可以調用以下插件來導入數據。
或者,您可以運行腳本將文本文件導入到 JMP 中。
我基於所附示例文本文件進行導入。
腳本和加載項都可以更新,以將類似的文件連接到單個文件中。
乾杯,
斯坦
回复:單單元格表突破嘿傑夫,
我已經和負責的測試工程師談過了,你不用擔心:P。 不幸的是,這是 14k 個獨立的表格,每個表格都有自己的單元格和重複的標題。 我已附上 3 個圖像(14k...)。 我會嘗試你的方法並讓你知道效果如何!

回复:單單元格表突破首先,無論是誰創建了這樣的表格,都應該……嗯……我可以想到一些適當的懲罰。
幸運的是,我認為 JMP 將使這個問題相對容易處理。
首先,使用列 -> 實用工具 -> 文本到列.. 。作為@Mandy_Chambers建議,但使用 NEWLINE 作為分隔符。

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

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

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

現在,您可以使用文本到列...再次,這次使用逗號 (,) 作為分隔符。

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

現在只需複制並粘貼列名稱即可。 這是一個可以幫助您的提示欄目名稱讓您失望? 嘗試這個。然後,使用列->標準化屬性根據需要將列的數據類型更改為數字。
你說你有一個包含 14k 的數據庫。 它們是數據庫中的 14k 個不同表還是一個表的 14k 行? 希望是後者,因為您應該能夠使用“文件”->“數據庫”->“打開表”將所有內容放入一個 JMP 數據表中...
如果確實有 14k 個不同的表,那麼您需要使用表格->連接將它們全部放入 JMP 中的一個表中,但在確認數據庫中的哪個表後,讓我們跨過那座橋。
不管,選擇匹配的單元格是另一個可以幫助您清理的工具。 當我們取得更多進展後,我將在後續文章中解釋這一點。
回复:單單元格表突破嗯...我一定沒有描述我想要正確做的事情。 我已經用之前/之後的示例更新了我原來的問題,以嘗試更好地說明。 此外,我有一個包含 14,000 個功能測試表的數據庫,我需要執行此操作,因此將文本轉換為列,然後轉置每個單獨的表並不是一個可行的選擇。
感謝您的幫助! 我真的很感激:D回复:單單元格表突破
回复:單單元格表突破曼迪,
感謝您的建議! 在發布此消息之前,我了解了 Text to Columns 實用程序,但是該實用程序每行創建 84 個新列,並且丟失了我嘗試使用的表格數據的功能。 我構建了一個我想要的輸出示例,並將其添加到我的原始帖子中。
謝謝!
回复:單單元格表突破我認為我們的帖子交叉了。 因此,在使用 Text to columns 之後,現在使用 Tables Transpose,您可以翻轉表格並將數據放入列中。
回复:單單元格表突破您可以採用該列的值,如 11.000,0.00,0.050,0.001,PASS,11.047,-156,並使用“列”>“實用工具”>“文本轉列”為該列中的不同內容創建單獨的列。
使用分隔符 ,-
這會給你這樣的列:
11,000 0.00 0.050 0.001 通過..等等..
如果您想更多或以不同的方式分解它,您可以使用不同的分隔符或空格。
希望這就是您想要做的。