回复:如何根據基值的位置計算相對值?值1_rel可以是公式列。
我不確定基於您的示例數據的公式是什麼。
通常我希望相對於意思值1 ——參數 1 , 或者值1 —— 0 ,但兩者都不符合示例。
如何根據基值的位置計算相對值?大家好,
我需要計算列值的百分比份額值1基於從列中選擇的值的位置值1 . 例如,如果我想根據列中的第二個值執行此操作值1 (位置 2,或值 2),結果列值1_rel相對值應如下所示:

此外,可能有更多數據需要按項目分組,然後為每個項目計算所有其他值的百分比份額(可能標準化或相對值有點令人困惑)。 我怎樣才能做到這一點? 如果解釋的不夠好,還請見諒,歡迎追問。
感謝你並致以真誠的問候
數據表腳本編寫回复:如何根據基值的位置計算相對值?謝謝你的評論。 是的,在先前版本的帖子中,表中為零,但我認為這可能有點令人困惑,所以我認為詢問從每個項目組的第二行中獲取值來計算所需值可能會更簡單. 是的,Param1 列中的“零”僅用於確定行號。回复:如何根據基值的位置計算相對值?你好,
您可以在新列中使用這個公認的複雜公式(也許有人會提出更簡單的公式):
Eval(
Eval Expr(
:Val[(:Group << get data table) << get rows where(
Col Cumulative Sum( 1, :Group ) == 2 & :Group == Expr( :Group[Row()] )
)] / :Val
)
)
可能值得至少拆開一點。
Eval( Eval Expr( )) 構造用於強制計算表達式 Expr ( :Group[Row()] )。 如果沒有這個,每行將返回幾個值……每個組一個。 嘗試通過刪除 Eval ( Eval Expr ()) 包裝器和 Expr() 包裝器來了解我的意思。
要確定我們將在比率中使用的值,我們需要獲取當前組中的第二行。 要找到這一行,我們必須匹配組(get rows where 子句的第二部分),並且還必須匹配組內的第二個值。 一個簡單的方法是查看一列 1 的累積總和,按 :Group 分組。 當此列 == 2 時,我們有某個組的第二個值。 這發生在多行中,但該子句的第二部分將結果限制為與當前行的組匹配的組。 這樣,表甚至不需要按組或值排序。
將累積和等價中的 2 更改為 k,允許您使用組中的第 k 個值而不是第 2 個。
乾杯,
布雷迪

回复:如何根據基值的位置計算相對值?嗨布雷迪,非常感謝你的代碼和解釋。 它完美地工作。 此致