我有一个带有多个时间戳的数据集。我想将它们分为几组,其中每组包含的数据点相隔不超过X小时。这意味着每个小组相隔最近X个小时。
关于如何做到这一点的任何想法?
答案 0 :(得分:1)
您必须引入一列,您可以通过该列进行聚类。如果我对您的理解正确,那么大约需要几个小时。由于您需要确定某行是否在群集中,因此不能使用动态距离群集。
但是您可以提取小时信息,并使用它来创建集群。
例如。使用hour - modulo of (hour / group size)
WITH a AS (
SELECT * FROM UNNEST([
TIME(0,40,0), TIME(1,23,0),
TIME(2,12,0), TIME(3,51,0),
TIME(4,1,0), TIME(5,51,0),
TIME(6,5,0), TIME(7,21,0),
TIME(8,56,0), TIME(9,34,0),
TIME(10,23,0),TIME(20,04,0),
TIME(23,43,0)
]) as time
)
SELECT
time,
EXTRACT(HOUR FROM time) one,
EXTRACT(HOUR FROM time)-MOD(EXTRACT(HOUR FROM time),2) two,
EXTRACT(HOUR FROM time)-MOD(EXTRACT(HOUR FROM time),3) three,
EXTRACT(HOUR FROM time)-MOD(EXTRACT(HOUR FROM time),4) four
FROM a
所以它是一组特定大小的小时。