當所有數據都丟失時,如何刪除可變列號的行我有一個自動生成的數據集和一些列,其中有一個子字符串“X_Clean”的列,將有一些空值。有時有 2、3、4 甚至 5 個不同的列,具體取決於數據集。我只想在這些“X_Clean”列的所有“n”都具有空值時刪除這些行,但如果至少其中一個列填充了一個值,我就不會刪除這些行。
我在考慮做一個 FOR 循環來生成感興趣的列列表,這很有效。
col_list = dt <<GET column="" names="">0, i--,
if(!contains(col_list[i], "X_Clean"),
remove from(col_list, i);
));</GET>但是我不確定下一步。因為我不能為每個單獨的列做另一個 FOR 循環,所以我需要總結所有這些列的值,如果為 null,則刪除...或其他?
這是我的表格的示例,在這種情況下,只有日期的第 3 行才有資格被刪除。
| 實體 | 2X_清潔 | 3X_清潔 | 4X_清潔 |
| A | 1個 | 3個 | 6個 |
| 乙 | | 4個 | 5個 |
| A | | | |
| 乙 | 4個 | 1個 | 3個 |
| A | 3個 | 4個 | 4個 |
| 6個 | 1個 | 1個 | 0 |
如果我可以對特定列進行硬編碼,我會這樣做,但我不能,因為它們各不相同。
dt << Select Where(Is Missing(:Name( "2X_Clean" ) | :Name( "3X_Clean" ) | :Name( "4X_Clean" )))<<DELETE rows=""></DELETE>
有任何想法嗎?謝謝!
回复:當所有數據都丟失時,如何刪除可變列號的行謝謝,吉姆。
回复:當所有數據都丟失時,如何刪除可變列號的行這是我的錯。我應該意識到以數字開頭的列會使 JMP 感到困惑。我在 :Name() 函數中添加了對列名的引用。
dt = Current Data Table();
col_list = dt << get column names( string );
For( i = N Items( col_list ), i > 0, i--,
If( !Contains( col_list[i], "X_Clean" ),
Remove From( col_list, i )
)
);
theExpr = "dt << select where(isMissing(Sum(:name(\!"" || col_list[1];
For( i = 2, i <= N Items( col_list ), i++,
theExpr = theExpr || "\!"),:name(\!"" || col_list[i]
);
theExpr = theExpr || "\!")))==1)<<DELETE rows=""></DELETE>
回复:當所有數據都丟失時,如何刪除可變列號的行吉姆,這是一個有趣的話題。 當我打開附件中的數據表並運行以下 jsl 時,似乎我無法刪除所有空行。 為什麼?
dt =當前數據表() ;
表達式= “dt <<選擇哪裡(isMissing(總和(:” || col_list [ 1個] ;
為了(我= 2個,我<= N 項( col_list ) ,我++,
表達式=表達式|| “,:” || col_list [我]
) ;
表達式=表達式|| "))==1)<<刪除行;" ;
評價(解析(表達式) ) ;
回复:當所有數據都丟失時,如何刪除可變列號的行您所要做的就是構建一個文字字符串變量,它是您需要運行的動態代碼來完成您想要的,然後一旦構建,就執行它。下面的代碼是您將如何做的示例
theExpr = "dt << select where(isMissing(Sum(:" || col_list[1];
For( i = 2, i <= N Items( col_list ), i++,
theExpr = theExpr || ",:" || col_list[i]
);
theExpr = theExpr || "))==1)<<DELETE rows=""></DELETE>