用於刪除同一類別中所有缺失值的列的 JSL 實現在附件檔案中,「商店」欄位被分成兩個商店 A 和 B。如果同一商店所在列的所有儲存格都為空,則刪除整列,如附件「預期結果」所示。如何使用 JSL 實現此功能?
我能夠統計每一列中的缺失值,但我找不到方法來驗證同一門店對應的所有單元格是否都為缺失值。您有什麼好的方法嗎?由於實際上有很多列——數萬列——使用耗時的計算方法會花費太長時間。
自動化和腳本編寫回覆:關於使用 JSL 實作按類別刪除所有缺失值的列為什麼保留了“香蕉價格”和“榴蓮價格”?所有「A」項中的「香蕉價格」都缺失,所有「B」項的「榴槤價格」也都缺失。
回覆:關於使用 JSL 實作按類別刪除所有缺失值的列你好,
我嚴格按照你的規則設計了一個非腳本選項。但是,正如@mmarchandFSLR指出的那樣,結果將與您的“結果”不符,因為香蕉和榴蓮將被排除/刪除。
1)將所有欄位堆疊起來(請參閱附件範例)
2)使用以下公式:
Col Sum( Is Missing( :Data ), :Store, :Label ) / Col Sum( 1, :Store, :Label )
3) 新增一個名為「要刪除的行」的主檢查列,公式如下:
Col Max( :MISSING by STORE PCT, :Label )
4)刪除標記的行
5)按「標籤」拆分結果表。
最好的,
TS
回覆:關於使用 JSL 實作按類別刪除所有缺失值的列我建議你創建一個類似這樣的表格。

然後,您可以通讀表格,並建立一個列表,列出滿足每個需要刪除的商店的 N 與 N Missing 要求的列。
以下是一個建立表格的範例腳本
names default to here(1);
dt=data table("Fruite Price");
colNames = dt << get column names(continuous);
dtMissing = dt << Summary( invisible,
Group( :Store ),
N Missing( colNames ),
Freq( "None" ),
Weight( "None" ),
statistics column name format( "column" ),
output table name( "N Missing" )
);
dtStack = dtMissing << Stack( invisible,
columns(
colNames
),
Source Label Column( "Product" ),
Stacked Data Column( "N Missing" ),
Output Table( "Stack of N Missing" )
);
dtEval = dtStack <<
Split(
Split By( :Store ),
Split( :N Missing, :N Rows ),
Group( :Product ),
Output Table( "Eval Table" ),
Sort by Column Property
);
您可以使用 Tabulate 平台建立表格,但您提到表格有數千列。我認為 Tabulate 在這種情況下可能不太適用,不過上面的腳本應該可以處理。