根据 30 秒内的时间间隔删除重复项

Posted

技术标签:

【中文标题】根据 30 秒内的时间间隔删除重复项【英文标题】:Remove duplicates, based on time interval within 30 seconds 【发布时间】:2022-01-18 05:36:04 【问题描述】:

我有一张车辆进入停车场的表格。对于每个预先注册的车辆,该表有多个条目。传感器附近存在有效的 HID 徽章,将在车辆通过大门的时间间隔内生成“n”条记录条目。

我需要使用 Power Query 语句删除重复的条目,考虑到重复的条目,徽章编号出现在多行中,时间间隔为 30 秒,在特定的门第一个始终是不重复的条目

我已经使用 RoundDown 减少了重复,及时消除了 Seconds,但仍然有重复在分钟级别上有所不同。

【问题讨论】:

【参考方案1】:

试试这个

它计算每一行与其下一行之间的秒数,并检查徽章和门。

let Source = Excel.CurrentWorkbook()[Name="Table1"][Content],
// create duplicate of entire table, offset by 1 row for comparison
MinusOne = Table.RemoveFirstN(Table.DemoteHeaders(Source),2),
custom1 = Table.ToColumns(Source) & Table.ToColumns(MinusOne ),
custom2 = Table.FromColumns(custom1,Table.ColumnNames(Source)&Table.ColumnNames(MinusOne) ),
#"Renamed Columns1" = Table.RenameColumns(custom2,"Column1", "Date2", "Column2", "Badge2", "Column3", "Gate2"),
#"Added Custom" = Table.AddColumn(#"Renamed Columns1", "Custom", each if [Badge]=[Badge2] and [Gate]=[Gate2] and Number.Round(Duration.TotalSeconds(Duration.From(Number.Abs(Number.From([Date])-Number.From([Date2])))))<1800 then "Yes" else "No"),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom","Date2", "Badge2", "Gate2")
in  #"Removed Columns"

【讨论】:

这个建议很有用,但它并没有解决记录混乱的问题,例如从附近更大范围的第二辆车的另一个​​徽章中交错读取。日期徽章门 15/dic 14:31:46 89726 IN 15/dic 14:31:48 89726 IN 15/dic 14:31:48 89726 IN 15/dic 14:31:48 89726 IN 15/dic 14:31: 50 86755 IN 15/dic 14:31:50 89726 IN 15/dic 14:31:52 89726 IN 15/dic 14:31:52 89726 IN 15/dic 14:31:54 86755 IN 15/dic 14:31: 54 86755 IN 15/dic 14:31:54 86755 IN 15/dic 14:31:54 86755 IN 15/dic 14:31:54 86755 IN 15/dic 14:31:56 86755 IN @Dirk 所以你写的是你的实际数据可能有两辆车同时通过大门?是否有最大数量的车辆可以进入该大门?这两辆车会不会朝不同的方向行驶? @Ron 大门一次只能处理一辆车。但是,第二辆车可能会在他的队列位置之前发送徽章信号,因为它的信号比第一辆车强。 我们可以做一个先分组的版本,但一个简单的解决方案似乎是先对数据进行排序。然后应该可以正常工作。如果排序很重要,请在第一次排序之前使用索引,然后再使用 根据您的评论,我了解在 MinusOne 之前,我必须对 (Badge, Date) 进行排序。您能否确认我是否应该将其放置在此处。

以上是关于根据 30 秒内的时间间隔删除重复项的主要内容,如果未能解决你的问题,请参考以下文章

根据多列和日期时间删除重复项

根据不同列中的值删除重复项

awk 根据两列和自定义重复规则删除重复项

使用 pandas 和 Python 删除重复项

使用 R 如何删除基于多列的重复项,但选择重复项的“最完整”版本

如何根据某个字段从数据库表中删除重复项