製作和更新舊電子表格中包含特定值的新電子表格你好JMP社區,
我是JMP和JSL的新手,所以我很難完成這兩個相關的任務。
1)我想編寫一個腳本,從舊電子表格中創建包含特定實體的行的新電子表格。 例如,我想創建一個腳本,創建所有男性行的新數據表。(見下面的附圖)
2)我需要能夠自動更新此數據表。假設全表位於本地數據庫(如SSMS上),如何使用JMP腳本從本地SQL數據庫更新所有男性表?我已經嘗試添加自動生成的“更新數據庫”腳本,但我不知道我在做什麼。任何幫助將非常感激。
非常感謝JMP社區。



回复:從舊電子表格中創建和更新包含特定值的新電子表格 @jmpandvba ,
在您提供的示例中:
NewHt=dt<<SUBSET></SUBSET>
請注意,NewHt是對數據表的引用。因此,在update語句中,您將引用傳遞給要追加的數據表。在我提供的示例腳本中,將“dt1”
回复:從舊電子表格中創建和更新包含特定值的新電子表格對此主題的最新更新,
在創建了子集的新數據表之後,如果附加原始數據集,如何編寫JSL腳本來更新它?
我假設在JMP腳本指南的第177頁上給出了JSL中的“更新”功能:
NewHt=dt<<SUBSET></SUBSET>
但是我怎麼能用我們剛才製作的特定子集做到這一點呢?
回复:從舊電子表格中創建和更新包含特定值的新電子表格 @jmpandvba ,
//Clean up
Clear Log(); Clear Globals(); Close All(DataTables,"No Save");
// Open Sample Data
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Subset based on condition
dt << Select Where(:Sex == "M");
// Select some columns
Column(dt,"age")<< Set Selected(1);
dt << Invert Column Selection;
dt1 = dt << Subset(Selected Rows(1),Selected Columns(1));
dt1 << Set Name("Boys In Class");
// Save as spreadsheet
Close(dt1,Save("C:\Test.xlsx")); 回复:從舊電子表格中創建和更新包含特定值的新電子表格感謝您的快速回复!另一個快速問題,如果我想製作除了年齡之外的所有列的子集,我該怎麼做?(我想我寫的腳本行是這樣的,但列括號中是什麼?)
subdt = dt << Subset(Column(..........), Output Table Name( "Male summary" ) );
回复:從舊電子表格中創建和更新包含特定值的新電子表格 @jmpandvba ,
回答問題的一部分很簡單,如果您在JMP中有數據,則可以輕鬆創建新的數據表或電子表格,如下所示。
//Clean up
Clear Log(); Clear Globals(); Close All(DataTables,"No Save");
// Open Sample Data
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
// Subset based on condition
dt << Select Where(:Sex == "M");
dt1 = dt << Subset("");
dt1 << Set Name("Boys In Class");
// Save as spreadsheet
Close(dt1,Save("C:\Test.xlsx"));
至於如何自動更新數據表,這將需要批量/計劃執行JMP腳本。在一天中的給定時間,如果您可以讓應用程序調用您的JMP腳本並運行,您將能夠實現它。您可以查看JMP的C#或VBA自動化示例以獲取想法。(Z:\ Program Files \ SAS \ JMP \ 14 \ Samples \ Automation)