你好,
我嘗試選擇“違規”列中值為 1 的所有行,提取“設備”列值,然後排除與這些設備關聯的所有行。任何人都可以幫我想出一個腳本嗎?謝謝!
下面是一個將執行此操作的腳本
Names Default To Here(1);
dt = Current Data Table();
dt << Clear Row States;
violation_rows = dt << Get Rows Where(:Violation == 1);
violation_devices = Associative Array(dt[violation_rows, "Device"]) << get keys;
dt << Select Where(Contains(violation_devices, :Device)) << Exclude(1) << Clear Select;
- 獲取行號,其中:Violation == 1
- 使用數據表下標和關聯數組來獲取設備
- 選擇包含這些設備的行並將其排除
您也可以輕鬆地以交互方式執行此操作(這將由增強日誌記錄):
- 創建一個匯總表,其中“設備”為組,“違規”為子組。 還要確保表已鏈接
- 從 N(1) 中選擇 0 個值(表示驗證 == 1),然後右鍵單擊行以反轉選擇
- 現在您已在主表中選擇了設備
- 您現在可以排除這些行
JMP 將為您創建一個像這樣的腳本
// Open Data Table: Sample(1).jmp
// → Data Table("Sample(1)")
Open("$DOWNLOADS/Sample(1).jmp");
// Data table summary
// → Data Table("Sample(1) By (Device)")
Data Table("Sample(1)") << Summary(Group(:Device), N, Subgroup(:Violation), Freq("None"), Weight("None"));
// Select matching cells
Data Table("Sample(1) By (Device)") << Select Where(:"N(1)"n == 0);
// Invert current selection
Data Table("Sample(1) By (Device)") << Invert Row Selection;
// Toggle selected rows' exclude state
Data Table("Sample(1) By (Device)") << Select Where(:"N(1)"n == 0) << Invert Row Selection << Exclude;
// Close Data Table: Sample(1) By (Device)
Close(Data Table("Sample(1) By (Device)"), NoSave);
經過一些小的修改,它將成為將來使用的相當強大的腳本(使用變量而不是表名,以 Names Default To Here(1)... 開始,以提及一些更改)。