如何使用 JSL 替換帶有“0”的缺失值<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />如何使用 JSL 替換帶有“0”的缺失值?
我可以使用“查找並替換全部”手動執行此操作,但我需要將其合併到每天自動運行的代碼中。
回复:如何使用 JSL 替換帶有“0”的缺失值當我使用播放按鈕從腳本窗口運行它時,這是有效的,但不能在調試器中運行它,也不能通過 .jsl 的自動運行來啟動它。
dtLongestWaitStates << set name( "LongestWaitStates" );
dtLongestWaitStates = Current Data Table();
nc = dtLongestWaitStates << get column names( numeric );
For( i = 1, i <= N Items( nc ), i++,
nc[i][dtLongestWaitStates << get rows where( Is Missing( nc[i][] ) )] = 0
);
拉金卡津
JMP13.2.1
回复:如何使用 JSL 替換帶有“0”的缺失值當然,我很欣賞這句警告。我肯定,沒有考慮過。
同樣重要的是要記住,丟失的數據可能是有價值的數據,有時最好保持原樣!
回复:如何使用 JSL 替換帶有“0”的缺失值這都是真的。我覺得是時候豎起“警告”旗幟了。只因為我們能在 JMP 中做某事並不總是意味著我們應該。
回复:如何使用 JSL 替換帶有“0”的缺失值雖然你說的是真的,但它對數據做出了假設。例如,也許他的數據不是連續的?有時 0 不會被記錄,而是會被視為缺失。如果有人嘗試使用 0 為假、1 為真進行單向分析如果他們的零最終顯示為丟失,他們就會遇到問題,因為 Oneway 分析會忽略 JMP 中缺失的行。他們最終只會得到一個類別!
還有其他原因 0 可能會顯示為缺失。通常在大型數據庫中存儲 0 是浪費空間。由於 Pokemon Go 現在很強大,我將用它作為例子。我可能想記錄我一天抓到的所有神奇寶貝,12 只拉塔和 6 隻小波弟。然而,我不想為那天我沒有抓到的其他 148 個神奇寶貝存儲 0。如果我這樣做了,我很快就會用無用的信息填滿我的數據庫。因此,如果我查詢我的數據,我會在任何給定時間丟失大部分神奇寶貝,但丟失是 = 到 0。
在類似的情況下,您可能會丟失數據,相當於 0 b/c 的數據轉換問題、設計不當的查詢等。
回复:如何使用 JSL 替換帶有“0”的缺失值很抱歉參加這個聚會遲到了,但我覺得有必要插一句:將缺失值設置為零(或平均值或任何其他單一插補方法)有嚴重的缺點。大多數這些方法都會產生有偏差的參數估計,即使在數據完全隨機丟失的理想條件下也是如此。有很多更好的方法來處理丟失的數據。
回复:如何使用 JSL 替換帶有“0”的缺失值由於沒有其他人回答,解決方案是相同的,只需抓取字符列並將行設置為等於您認為合適的字符 - 在下面的情況下為“N/A”。
請注意,設置它 =0 會將列更改為數字,並將刪除所有字符數據,但是 ="0" 應該沒問題。
dt = Current Data Table();
nc = dt << get column names( Character );
For( i = 1, i <= N Items( nc ), i++,
nc[i][dt << get rows where( Is Missing( nc[i][] ) )] = "N/A"
);
回复:如何使用 JSL 替換帶有“0”的缺失值涼爽的! ...在最後兩行中,clsRej 應該替換為 clsMat,對嗎?
同時對於字符列我們有類似的解決方案嗎?
回复:如何使用 JSL 替換帶有“0”的缺失值其他方式...
clsMat = dt << Get As Matrix( {"colA", "colB"} );
clsMat[Loc( Is Missing( clsMat ) )] = 0;
:colA << Set Values( clsRej[0, 1] );
:colB << Set Values( clsRej[0, 2] );
ETC。
邏輯索引通常比循環更快
回复:如何使用 JSL 替換帶有“0”的缺失值謝謝大家!
乾杯!
回复:如何使用 JSL 替換帶有“0”的缺失值另一種方法是使用單個循環(僅限數字列)。
dt = Current Data Table();
nc = dt << get column names( Numeric );
For( i = 1, i <= N Items( nc ), i++,
nc[i][dt << get rows where( Is Missing( nc[i][] ) )] = 0
);
回复:如何使用 JSL 替換帶有“0”的缺失值這本質上與 exj 的響應相同,但更清晰一些。確實如此;但是,僅更改數字列中缺少的內容。
dt = current data table();
for(ij = 1, ij <= NCol(dt), ij +=1,
CurCol = Column(dt, ij);
If(CurCol << get data type == "Numeric",
For Each Row(
IF(IsMissing(CurCol[]), CurCol[] = 0)
);
);
);
回复:如何使用 JSL 替換帶有“0”的缺失值我會避免使用 j 作為循環變量,因為它也是一個 JSL 函數。
J(n行, , <值>)
功能:創建相同值的矩陣。
返回:矩陣。
論據:
行:矩陣中的行數。 如果恩科爾斯沒有指定,行數也用作恩科爾斯。
ncol:矩陣中的列數。
價值:用於填充矩陣的值。 如果價值未指定,則使用 1。
回复:如何使用 JSL 替換帶有“0”的缺失值你好,
這是基於“Jump into scripting”一書。 我用 z 替換所有缺失值。
allCols = dt2 << Get Column Names( String );
For( i = 1, i <= N Items( allCols ), i++,
/* Loop through each row. */
For( j = 1, j <= N Rows( dt2 ), j++,
/* The IsMissing function will return a ‘1’ or true if the
value is missing. If true, cell is assigned zero. */
If( Is Missing( Column( dt2, allCols ) ),
Column( dt2, allCols ) = "z"
)
)
);
希望這可以幫助。