如何根據基值的位置計算相對值?大家好,
我需要計算列值的百分比份額值1基於列中所選值的位置值1 。 舉個例子,如果我想根據列中的第二個值來執行此操作值1 (位置 2,或值 2),結果列值1_rel相對值應該如下所示:

此外,可能還有更多數據需要按項目進行分組,然後為每個項目計算所有其他值的百分比份額(可能標準化或相對值是一個有點令人困惑的術語)。 我怎樣才能做到這一點? 如果解釋得不夠好,請原諒並隨時提問。
感謝你並致以真誠的問候
分享和交流結果回复:如何根據基值的位置計算相對值?嗨布雷迪,
希望這是允許的,即使最初的問題已經得到解答。
我和盧卡斯有類似的問題,我一直在嘗試調整你的(非常好的)答案以適應我的問題。
基本上,我也嘗試將一列單獨劃分,但是我沒有使用第二列(或第 k 列)作為參考,而是有第三列名為 label 的列,我想用它來查找參考點。 我遇到的問題是,我無法弄清楚如何讓“by-loop”在我的情況下工作,我的腳本現在所做的就是將每個值除以名為“big”的第一個值(我明白為什麼,但是不是如何修復它)。
c << new column("Rel", numeric, continuous, formula(
Eval(
Eval Expr(
:Val[(:Group << get data table) << get rows where(
label == "big" & :Group == Expr( :Group[Row()] )
)] / :Val
)
));
)
/V
回复:如何根據基值的位置計算相對值?嗨布雷迪,非常感謝您的代碼和解釋。 它工作完美。 此致回复:如何根據基值的位置計算相對值?你好,
您可以在新列中使用這個公認的複雜公式(也許有人會提出一個更簡單的公式):
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() 包裝器來嘗試一下,看看我的意思。
為了確定我們將在比率中使用的值,我們需要獲取當前組中的第二行。 要找到這一行,我們必須匹配組(獲取行 where 子句的第二部分),並且還必須匹配組內的第二個值。 執行此操作的一個簡單方法是查看按 :Group 分組的一列 1 的累積和。 當該列 == 2 時,我們得到某個組的第二個值。 這種情況發生在多行中,但子句的第二部分將結果限制為與當前行的組匹配的組。 這樣,表甚至不需要按組或值排序。
將累積和等值中的 2 更改為 k,允許您使用組中的第 k 個值而不是第 2 個值。
乾杯,
布雷迪

回复:如何根據基值的位置計算相對值?謝謝您的評論。 是的,在帖子的前一個版本中,表格中的值為零,但我認為這可能有點令人困惑,所以我認為也許詢問從每個項目組的第二行獲取值來計算所需的值會更簡單。 是的,Param1 列中的“零”僅用於確定行號。回复:如何根據基值的位置計算相對值?值1_rel可以是公式列。
我不確定根據您的示例數據該公式是什麼。
通常我期望相對於平均值值1 -參數1 , 或者值1 - 0 ,但都不符合示例。
編輯:我認為公式值1_rel與您的數據匹配的是 2 /值1 。 您可以將其放入列公式中。 但...
我懷疑你從某個地方有零,並且想從零查找行號 2。 JMP 數據表通常排列為同一行上的所有數據。 將 Param 值作為 Value 列的列屬性可能是有意義的。 這將需要更多的 JSL 腳本,但可能會更好地反映數據的組織。