我有数据,我试图从中识别模式。但是,每个表中的数据都不完整(缺少行)。我想将表格分成完整的数据块,然后确定每个模式的模式。我有一列可以用来确定数据是否完整或未被调用sequence
。SQL通过连续增加序列来分割数据,然后每个都通过一个模式子集
数据看起来就像是:
Sequence Position
1 open
2 closed
3 open
4 open
5 closed
8 closed
9 open
11 open
13 closed
14 open
15 open
18 closed
19 open
20 closed
首先,我想将数据分割成完整的部分:
Sequence Position
1 open
2 closed
3 open
4 open
5 closed
---------------------------
8 closed
9 open
---------------------------
11 open
---------------------------
13 closed
14 open
15 open
---------------------------
18 closed
19 open
20 closed
然后我想识别模式closed open, ..., open, closed
这样才好从关闭到打开n行(其中n至少为1),然后返回关闭
从样本数据中可以看出:
Sequence Position
2 closed
3 open
4 open
5 closed
---------------------------
18 closed
19 open
20 closed
这使我可以进行分析的最终表格,因为我知道没有破碎的序列。如果这更容易处理,我还有另一列position
是二进制文件。
表格很大,所以尽管我认为我可以编写循环来计算出我的结果,但我认为这种方法不够高效。另外我要整个表拉入R
,然后找到结果表,但是这需要拉一切都变成R
第一所以我不知道如果这是在SQL
编辑可行的:这是比较有代表性的不同样本数据:
Sequence Position
1 open
2 closed
3 open
4 open
5 closed
8 closed
9 open
11 open
13 closed
14 open
15 open
18 closed
19 open
20 closed
21 closed
22 closed
23 closed
24 open
25 open
26 closed
27 open
注意这应该有相同的结果,但也与
23 closed
24 open
25 open
26 closed
21
,22
和27
不是因为他们不符合closed
,open
... open
,closed
模式
但是如果我们28 closed
我们希望27
和28
因为没有时间间隔和图案将适合。如果不是28
它是29 closed
我们不希望27
或29
(因为虽然模式是正确的序列中断)。
要添加一些上下文,请考虑从停止,运行到停止的计算机。我们记录了这些数据,但是在记录中存在空白,这些记录是通过破坏序列来表示的。以及停止运行停止循环中的数据丢失;数据有时会在机器已经运行时开始记录,或者在机器停止前停止记录。我不想要这些数据,因为它不是停止,运行,停止的完整循环。我只想要那些完整的周期,并且序列是连续的。 这意味着我可以将我的原始数据集转换为一个一个接一个完整的循环。
我建议你设置SQL小提琴或Rextester。 –
实际上你想要的是Spilled意味着什么?为此表格分配表格? –
不只是一个'select'来过滤数据 – Olivia