首页 > 解决方案 > 我要对发生事件进行分类

问题描述

我有以下数据集表明我的自行车旅行:

time    Event   Occ
10:00   Moving  1-moving
10:10   Parked  1-parked
10:12   Moving  2-moving
10:30   Moving  2-moving
11:00   Moving  2-moving
11:05   Parked  2-parked
11:07   Moving  3-moving

事件指示自行车是移动还是停放

我需要添加一个计算列:Occ指示Event发生的列。在上表中,您可以看到我的预期结果。

我尝试使用 Rowid() 没有成功。

标签: calculated-columnsspotfire

解决方案


您正在寻找的表达式如下:

Concatenate(Integer(1 + Sum(If([Event]="Parked",1,0)) OVER (AllPrevious([time])) - (If([Event]="Parked",1,0))),"-",[Event])

说明:

  • 计算当前行之前的Parked事件数:

Sum(If([Event]="Parked",1,0)) OVER (AllPrevious([time]))

  • 添加一个,因为第一行开始于1而不是0

1 +...

  • 停放的事件必须与之前的移动具有相同的编号

...- (If([Event]="Parked",1,0))

  • 有一个integer而不是一个real(因为结果Sum是一个real数字,并且这种类型在其他操作之后保留integer

Integer(...)

  • 添加 事件-的名称

Concatenate(...,"-",[Event])


推荐阅读