如何將公式列更改為變量?我正在使用第一個公式列作為中間結果,以便重新計算結論是第二個正式專欄。第二列使用第一個公式列的結果。
有沒有簡單的方法來避免第一個公式列,例如創建一個varaibele?我的 JSL knolodge非常基礎。
提前致謝。
Re:如何將公式列更改為變量?感謝您的回复。
你能告訴我如何結合 col quantile()行函數與矩陣版本?
Re:如何將公式列更改為變量?正如您所說,If satement公式可以很好地獲取NewDataCorr值。
我確實使用新列更新了您的文件:NewDataCorr 2。在此列中,使用了If語句公式。我沒有使用DataTmp列中的值,而是使用DataTmp公式表達它們:
如果(:P1 == 0&:P2
,
:DataRaw
)
在這種情況下,我擺脫了DataTmp列。 您對此解決方案有何看法?
Re:如何將公式列更改為變量?Cameron的解決方案應該非常快,即使在100K +行上也是如此。
另一件事,使用col quantile()函數對數據表公式中的每一行進行求值,這樣會使事情變慢。在矩陣版本中,它只被評估一次。
Re:如何將公式列更改為變量?我上傳了example.jmp文件。我的具體問題是,w hat是避免創建colums的最佳方法:DataTmp和:FlyerTmp以獲取colums:DataCorr借助於colums:P1,:P2和:DataRaw?
根據JSL用戶的說法,最好在列表或規則的幫助下計算這些列,特別是如果數據集很大的話。
Re:如何將公式列更改為變量?感謝您的JSL建議。 我很想測試腳本。 現在我無法檢查這個(沒有訪問JMP)。
我想知道如果它們是0,如何從原始列DataRaw處理數據?
Re:如何將公式列更改為變量?感謝您的回复。
我想擺脫tmp列,以保持數據集盡可能簡單。示例文件是關於我的問題的非常基本的文件。在實踐中,數據集包含大約10到15個不同的DataRaw列,我喜歡以相同的方式準備。還添加了其他不同的列。
你對FlyerTmp專欄是正確的。它可以包含在DataCorr列中。我稍後會檢查你的文件(現在無法訪問JMP)。
Re:如何將公式列更改為變量?想到了什麼。 在計算分位數之前,您必須從temp中刪除零,因為這些零將被包含在內。 你可以通過在x98之前運行它來做到這一點。
miss_rows = loc(as list(temp),0);
temp[miss_rows] = .;
在創建新列之前,您也可以為“final”執行相同的操作。 這將消除在最後替換缺失值的需要。
Re:如何將公式列更改為變量?感謝您發布樣本數據表。
由於您只想計算某些行的分位數,因此您必須擁有基於新公式的列。 因為你已經使用dataTmp做了這個,這是一個很好的方法來繼續。但是,您不需要flyerTmp,因為所有這些都是您在dataCorr中使用的條件。您可以直接將該條件放入dataCorr。
我在附加的數據表中完成了這個,有100,100行。這很快。
我很好奇為什麼你擔心擺脫中間欄?知識分子的好奇心還是其他一些問題?
Re:如何將公式列更改為變量?嘗試這樣的事情。 這個想法是將數據與布爾值向量進行元素相乘,這是您的邏輯條件。 這應該是相當快的,但我承認我遠不是計算效率最高的專家。
dt = Current Data Table();
//Get values for other columns
raw = dt:DataRaw << Get Values;
P1vals = dt:P1 << Get Values;
P2vals = dt:P2 << Get Values;
//Compute equivalent of DataTmp
temp = (P1vals == 0 & P2vals < 3):*raw;
//Compute 98th percentile of temp
x98 = quantile(0.98, temp);
//Compute final column
final = (temp <= x98):*temp;
dt << New Column("DataCorr", << Set Values(final));結果將為0而不是丟失。 你可以使用類似的東西替換缺少的值(儘管如果你的表中仍然有原始的DataCorr,前一個腳本將產生一個“DataCorr 2”列,並且這個代碼行將不在右列上工作)。
//Replace 0s with missing
dt:DataCorr[dt << Get Rows Where(:DataCorr == 0)] = .;
Re:如何將公式列更改為變量?你好卡梅倫 ,
附上了example.jmp文件。避免創建colums的最佳方法是什麼:DataTmp和:FlyerTmp以獲取colums:DataCorr在colums的幫助下:P1,:P2和:DataRaw?
這適用於行數超過100,000的數據集。
托馬斯
Re:如何將公式列更改為變量?只需查看幾個細節:
1。第一列中的所有行的值是否相同?
2。您是否編寫了列的添加腳本?
- 可能的是將第一個結果計算在內存中,作為矩陣中的單個列,然後,如果您需要這些值,只需從矩陣中獲取它們並使用這些值創建一個新列。通常這比添加一個colum更快,並且在表中更新它(對於非常高的表)。
- 更好的是,在矩陣中(在內存中,而不是在表中)進行兩種計算,然後將結果發回表中。
- 如果第1列中的所有值都相同,那麼可以在腳本中計算它,並將其作為表格添加到數據表中
變量並引用第2列中的變量。
很多好的選擇,但它們都取決於你想要做的事情。
Re:如何將公式列更改為變量?如果您需要更精確的幫助,則必鬚髮布一個有效的示例。
Re:如何將公式列更改為變量?謝謝你的解決方案。有用。但是,如果在公式中使用某些狀態,這可能會減慢計算速度。
Re:如何將公式列更改為變量?您是否可以從第一列複製公式,並將其粘貼到第二列的公式中,無論引用第一列的位置是什麼?