我有數據,我試圖從中識別模式。但是,每個表中的數據都不完整(缺少行)。我想將表格分成完整的數據塊,然後確定每個模式的模式。我有一列可以用來確定數據是否完整或未被調用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