我有關於使用腳本將 xls 文件導入 jmp 的問題
我想使用“7”行作為標題導入此文件,並將新列“Lot id”填充數據作為 B3 單元格數據 (B6C141-02B5) 添加到新列中
我怎樣才能做到這一點
謝謝你

正如 txNelson 和 Ian 所提到的,您的數據表沒有真正適合統計分析的格式,但不幸的是,這種情況在行業中很常見,尤其是在主要使用電子表格工具時。 統計數據應盡可能以矩形形式顯示在列和行中。 否則,您需要為計算指定每個單元格,而不是使用向量和矩陣,這樣效率會高得多。 這就是 txNelson 兩次導入工作表並提取信息的原因,就像 Ian 以類似的方式所做的那樣。
前段時間,我有一個關於從 Excel 導入數據的技巧的發現演示文稿,我相信它仍然有效:使用 JMP 中的 Excel 數據解決常見問題(2016 年歐洲 JMP 探索峰會)
還寫了一些關於從 Excel 導入的博客。 與您不同的情況,但可能對其他情況有用:
Martin 關於 Excel 和 JMP 的博客
我認為您需要了解一點 JSL,這應該可以幫助您入門。 “最佳”方法將取決於您可以(和不能)假設超出您給出的示例的數據結構。
此代碼一點也不健壯,並假定您的文件位於“下載”文件夾中。 如果您查看“幫助 > 書籍 > 腳本指南”,您可能會弄清楚它在做什麼(取決於您有多少編碼經驗)。
NamesDefaultToHere(1);
dt = Open("$DOWNLOADS/test_import.xlsx");
lid = Column(dt, 2)[2];
colNames = {};
InsertInto(colNames, Column(dt, 1)[11]);
InsertInto(colNames, Column(dt, 2)[11]);
InsertInto(colNames, Column(dt, 3)[7]);
InsertInto(colNames, Column(dt, 4)[7]);
InsertInto(colNames, Column(dt, 5)[7]);
InsertInto(colNames, Column(dt, 6)[7]);
InsertInto(colNames, Column(dt, 1)[2]);
dt << deleteRows(1::11);
for(c=1, c<=NItems(colNames), c++, Column(dt, c) << setName(colNames[c]));
Column(dt, colNames[NItems(colNames)]) << setValues(Repeat(lid, NRows(dt)));
dt << setName("Data for lot "||lid);這是輸入數據的腳本
我使用 JMP Excel 嚮導以交互方式打開文件,然後將 JMP 創建的源腳本複製到腳本中。該腳本兩次讀入文件。首先讀取數據,然後第二次讀取 Lot ID。然後我只是添加了代碼,讓您選擇要導入的 Excel 文件,以及創建新批次 ID 列所需的 JSL。
names default to here(1);
path = Pick File();
dt = Open(
path,
Worksheets( "Sheet1" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 1 ),
Number of Rows in Headers( 7 ),
Headers Start on Row( 6 ),
Data Starts on Row( 13 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
);
dtLotID = Open(
path,
Worksheets( "Sheet1" ),
Use for all sheets( 1 ),
Concatenate Worksheets( 0 ),
Create Concatenation Column( 0 ),
Worksheet Settings(
1,
Has Column Headers( 0 ),
Number of Rows in Headers( 7 ),
Headers Start on Row( 6 ),
Data Starts on Row( 3 ),
Data Starts on Column( 1 ),
Data Ends on Row( 0 ),
Data Ends on Column( 0 ),
Replicated Spanned Rows( 1 ),
Replicated Spanned Headers( 0 ),
Suppress Hidden Rows( 1 ),
Suppress Hidden Columns( 1 ),
Suppress Empty Columns( 1 ),
Treat as Hierarchy( 0 ),
Multiple Series Stack( 0 ),
Import Cell Colors( 0 ),
Limit Column Detect( 0 ),
Column Separator String( "-" )
)
);
lotID = dtLotID:Column 2[1];
close(dtLotID, nosave );
dt << New Column("Lot ID", Character, set each value(lotID));