大家好,
我正在編寫一個腳本,用於根據某些條件從資料表中選擇一個子集:
Example dt 是我的資料表,其中包含列:Error_ID
我輸入:「dt_subset=dt< 現在假設 dt 資料表中沒有 Error_ID==0 行,則 dt_subset 為空。
我原本期望 dt_subset 是一個新資料表,它與表 dt 具有相同的列,但行數為 0,這樣,如果我檢查“If( !Empty(dt_subset)...)”,我會得到 false,並且我不會繼續對空的 dt_subset 表進行操作。
如果我嘗試檢查 dt_subset 是否為空,則會出錯。
我基本上想做的是檢查所選內容是否為空。您有解決方案嗎?
感謝您的幫忙!
如果您只想檢查是否選取了任何行,可以使用<< 取得選取行
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt << Select Where(:age >= 20);
selrows = dt << Get Selected Rows;
If(N Items(selrows) == 0,
Throw("No rows selected");
);
如果經過這樣的篩選後我仍然需要一個空表,我通常會這樣做:
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
rows_of_interest = dt << Get Rows Where(:age >= 20);
If(N Items(rows_of_interest) > 0,
dt_subset = dt << Subset(Rows(rows_of_interest), Selected Columns(0), Output table("SUBSET"));
,
dt_subset = dt << Subset(Rows(1), Selected Columns(0), Output table("SUBSET"));
dt_subset << Delete Rows(1);
);
Show(N Rows(dt_subset)); // demo purposes
如果您想從尚未建立的表中進行檢查,則需要進行檢查。
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt_subset = dt << Select Where(:age >= 20) << Subset(Selected Rows(1), Selected Columns(0), Output table("SUBSET"));
If(Is Empty(dt_subset),
Throw("No rows selected");
);
Write();