回复:如何根据基值的位置计算相对值?值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 个。
干杯,
布雷迪
