calculated-columns - 我要对发生事件进行分类
问题描述
我有以下数据集表明我的自行车旅行:
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() 没有成功。
解决方案
您正在寻找的表达式如下:
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])
推荐阅读
- xml - 如何从具有相同名称的节点中获取最后一个值
- javascript - 使用 node.js 渲染 svg 路径数据服务器端
- python - 将值数组传播到函数调用中的参数
- c# - 在多线程应用程序中正确管理 DbContext
- java - Apache Avro Maven 插件生成 UUID 字段而不是字符串
- php - 我希望你帮助我,以便我可以将 md5 函数与 php 中的字符串变量连接起来
- bash - 如何通过匹配数据来组合两个文件的内容
- jasmine - 如何在并行执行量角器测试脚本时生成合并报告?
- xml - 如何在 XSLT 中进行复杂的条件处理
- ios - SwiftUI @Binding 初始化