![](/img/trans.png)
[英]calculation the difference for same column for the specific rows in Spotfire
[英]Spotfire: calculating difference between two rows in same column based on attributes in different columns
我是Spotfire的新手,需要帮助来获取计算列的正确表达式。
我的数据包含按ID
分组的不同主题。 对于每个ID,在不同的日子测量体重。 日在列给出Day
,并表示为1,2,3 ...
最后一天由另一列中给出的“ Last
和“ Bodyweight”测量值表示。 存在另一列,称为Baseline
。 如果该列的该行为Y
,则将所测体重作为基线。
我需要插入一个计算列,该列将包含“ Last
(表示为“ Last
在“ Day
Last
Body measurement
得的“ Body measurement
与“ Baseline
以Y
标记的“ Body measurement
之间的差异。
应该为每个新ID进行此操作。 我无法弄清楚。 有人可以建议我怎么做吗?
因此,Rita的计算列将为-4 (体重在Last=56
,体重在baseline=56
,因此52-56 = -4 )
您提供的样本数据有些奇怪,尤其是[Day]
列。 如果在您的控制范围内,我建议您在此处使用实际日期,而不要使用数字/字符串。
除非这样做,我能够获得您想要的结果,但是它需要两个计算列:第一个将[Day]
和[Baseline]
列合并为一个列,第二个包含您想要的信息。
第1列,我称为Day (int)
:
CASE
WHEN [Day]="Last" THEN 1000000
WHEN [Baseline]="Y" THEN -1000000
WHEN [Day]!="Last" THEN Integer([Day])
END
我选择了一个随机的最大值和最小值来建立时间顺序。 这将以1000000
代替“ Last”(如果您有任何超过一百万天的程序,则需要增加该数量)。 与[Baseline]
列相同,但是该值为-1000000
,这大概是您在此列中看到的最低值。 这两个都是假设,可能对您的实现不起作用 。 最后,在所有其他情况下,将使用日期编号。
第2列,我称为Diff
:
Last([Weight]) OVER (Intersect([Name],LastNode([Day (int)]))) -
First([Weight]) OVER (Intersect([Name],FirstNode([Day (int)])))
第一行使用OVER
表达式来检索[Weight]
的第一个值,该值按[Name]
按[Day (int)]
排序。 第二行给出了相反的结果,因此差被计算为-4
(或任何合适的值)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.