2013-02-01 19 views
2

我不確定我是否以正確的方式接近此值,但我正在嘗試將數據幀拆分爲基於值之間的差異的組。例如,使用下面的數據我想拆分MIN列中的值之間的差異,所以如果差異> 2,則創建一個拆分,在下面的示例中,我最終會得到4個拆分數據集。根據不同行中的值之間的差異來拆分數據幀

MIN SEC PT CO2R CO2D PAR 
58 10 5 375.7 -11.6 1002 
58 20 5 375.4 -11.6 1001 
58 33 5 375.2 -11.6 1001 
58 43 5 375.2 -11.5 1000 
58 54 5 375.3 -11.8 1000 
2 0 5 375.5 -6.3 1001 
2 8 5 375.3 -6 1000 
2 21 5 375.2 -6.1 997 
2 37 5 375.3 -6.2 993 
2 51 5 375.4 -6.2 1003 
5 20 5 376.3 -7.6 1000 
5 35 5 376.1 -7.3 1000 
5 52 5 375.9 -7.3 1000 
6 5 5 376 -7.8 1000 
6 23 5 376.1 -8 1002 
10 2 5 376.3 -3.3 1003 
10 14 5 376.3 -3.1 1003 
10 27 5 376.5 -3.4 1003 
10 41 5 376.7 -3.7 1006 
10 55 5 376.8 -3.9 997 

我已經使用了分割功能先前當存在數據的每個子集唯一的元素,但是我沒有在從該拆分此數據組是唯一的。也許這個功能不是我所需要的?任何提示讚賞!

感謝,

+0

目前尚不清楚你想要做什麼。您的數據在MIN列中有4個唯一值。爲什麼'split()'不工作?請張貼預期的結果。 – Andrie

回答

4

你可以使用diff找到連續值和split之間的差異分割數據幀。假設你的數據幀被稱爲dat

# create an index for differences > 2 
idx <- c(0, cumsum(abs(diff(dat$MIN)) > 2)) 

# split the data frame 
split(dat, idx) 

結果(4個數據幀的列表):

$`0` 
    MIN SEC PT CO2R CO2D PAR 
1 58 10 5 375.7 -11.6 1002 
2 58 20 5 375.4 -11.6 1001 
3 58 33 5 375.2 -11.6 1001 
4 58 43 5 375.2 -11.5 1000 
5 58 54 5 375.3 -11.8 1000 

$`1` 
    MIN SEC PT CO2R CO2D PAR 
6 2 0 5 375.5 -6.3 1001 
7 2 8 5 375.3 -6.0 1000 
8 2 21 5 375.2 -6.1 997 
9 2 37 5 375.3 -6.2 993 
10 2 51 5 375.4 -6.2 1003 

$`2` 
    MIN SEC PT CO2R CO2D PAR 
11 5 20 5 376.3 -7.6 1000 
12 5 35 5 376.1 -7.3 1000 
13 5 52 5 375.9 -7.3 1000 
14 6 5 5 376.0 -7.8 1000 
15 6 23 5 376.1 -8.0 1002 

$`3` 
    MIN SEC PT CO2R CO2D PAR 
16 10 2 5 376.3 -3.3 1003 
17 10 14 5 376.3 -3.1 1003 
18 10 27 5 376.5 -3.4 1003 
19 10 41 5 376.7 -3.7 1006 
20 10 55 5 376.8 -3.9 997 
+0

+1。我在想同樣的觀點。不清楚在分裂可能導致超過2的範圍的情況下,OP想要做什麼。例如,將當前dat $ MIN替換爲'c(58,59,59,60,60,61,62,2,2,5,5,5,6,6,10,10,10,10 ,10)'。第一組將包含58至62,但我不知道這是否他們想要。 – A5C1D2H2I1M1N2O1R2T1

+0

@AnandaMahto同意,這個問題還不清楚。如果OP會澄清在這些情況下要做什麼,我會改變答案。 –

+0

感謝您的快速響應。是的,我應該更清楚,道歉。我正在使用一臺機器進行手動測量,並且在收集數據時,它只是對每次測量應用1。一般來說,我會進行5次測量並使用平均值,但是這是一個龐大的數據集,有許多其他人使用它,有時會進行6 7或8次手動測量。我認爲分解數據集的唯一方法是將其分開幾分鐘,因爲測量之間大約需要3分鐘,因此可以獲得分析所需的分組。再次感謝 –