gpt4 book ai didi

expression - 匹配 Spotfire 中同一列中的组(表达式)

转载 作者:行者123 更新时间:2023-12-03 22:28:57 35 4
gpt4 key购买 nike

关于我之前发布的问题:
calculation the difference for same column for the specific rows in Spotfire

我有一个新问题,下面是示例:

enter image description here

我想实现的新功能是,

  • 搜索 下一个 TYPE=1 时最近的 TYPE=0
  • 如果 TYPE=1 具有最接近的 TYPE=0,则在新的计算列中将其标记为 'T',否则为 NULL

  • 数据规则:
  • 状态 列按顺序包含{1,2},空空间的默认值与其上方最后一个最接近的状态值相同。
  • 类型 列随机仅包含 0 和 1

  • 输出应该是这样的:

    enter image description here

    我尝试过的解决方案:
        If(([type]=1) and (first([type]) OVER (intersect(previous([type]),AllNext([status])))=0),"T",Null)

    看起来不错,但问题出在每个状态组中,例如第一个状态=1组中的最后一个TYPE=1(第5行),它没有下一个最接近的TYPE=0,因此判断将为Null。但是根据代码,它是T! :(

    有什么建议和想法吗?
    多谢'!
    PS:一些细节:
  • 状态的第一个类型值为 NULL
  • status 列中的其他空白空间可以如下填充,如果它对表达式有帮助:):

  • enter image description here

    最佳答案

    好的,这个真的测试了我的极限,我很好奇它是否会扩展。它适用于您的数据,给定您的位置 NULL .花了几个小时才弄明白。

  • 插入计算列 RowId()并命名 RowNum
  • 插入计算列 RankReal([status],"ties.method=first")并命名 Rank
  • 插入计算列 If((first([status]) over (Previous([RowNum])) - First([status]) over ([RowNum]))=0,[Rank] - Max([RowNum]) OVER (Intersect([status],AllPrevious([RowNum]))))并命名 GroupOfTypes
  • 惰性计算柱 If([type]>Min([type]) over (Intersect([GroupOfTypes],AllNext([RowNum]))),"T")并命名 Marking .这是您真正关心的行。

  • 结果

    enter image description here

    说明
    RankReal([status],"ties.method=first")
    这样做基本上是为了根据一段状态创建一个伪行号。您会看到它根据状态按顺序排列。这是我对数据进行分组的方法的第一步。
    If((first([status]) over (Previous([RowNum])) - First([status]) over ([RowNum]))=0,[Rank] - Max([RowNum]) OVER (Intersect([status],AllPrevious([RowNum]))))
    第一部分, (first([status]) over (Previous([RowNum])) - First([status]) over ([RowNum]))=0正在评估前一行的 [status] 是否列与当前行相同。如果是,则返回 bool 值 TRUE值(value)。如果它与前一行相同,我们知道它属于同一个块/分组,所以我们做一些数学计算,用整个块的相同值标记这一列。即 [Rank] - Max([RowNum]) OVER (Intersect([status],AllPrevious([RowNum]))) .因此,我们分组中的每一行都将等于相同的值。
    If([type]>Min([type]) over (Intersect([GroupOfTypes],AllNext([RowNum]))),"T")
    最后我们评估是否 [type]大于最小 [type]在所有下一行,基于行号。这将我们关注的数据限制在 [type] = 1没有实际过滤行,而只是查看 转发 在数据集中。如果这是真的,我们用 T 标记它。

    关于expression - 匹配 Spotfire 中同一列中的组(表达式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39725348/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com