2016-11-19 53 views
2

的差單調遞增整數序列考慮一個單調遞增的整數序列,例如:分組基於該復位

x <- c(0, 3, 5, 8, 10, 16, 18, 35, 36) 

我想這些組根據它們彼此區別。如果差值小於或等於4,我希望它們在同一個組中 - 但是只要分配一個組,就需要重新設置差異。

# x desired_group 
# 1 0    0 
# 2 3    0 
# 3 5    1 
# 4 8    1 
# 5 10    2 
# 6 16    3 
# 7 18    3 
# 8 35    4 
# 9 36    4 

{0,3}因爲他們在4以內一起走。一旦我們達到5,那個分組需要重置。也就是說,floor(x/4)將無法​​正常工作,因爲它沒有適當地「重置」。

+1

嘗試您可以測試'V1 < - X%/%5;匹配(V1,唯一的(V1)) - 1#[1] 0 0 1 1 2 3 3 4 4' – akrun

+0

如果你有'x < - c(0,3,5,8,10,16,18,35,36,789,22)' – akrun

+0

仍然有效......不是嗎?我得到'[1] 0 0 1 1 2 3 3 4 4 5 6' – Sotos

回答

4

我們可以將

v1 <- x %/% 5 
match(v1, unique(v1))-1 
#[1] 0 0 1 1 2 3 3 4 4 
+0

當試圖將想法擴展到240組時,這失敗了:'x < - c(0,4797,4796,4816,24939,26436,26476,45062,242405 ,242423,242433,242458)' - 使用'v1 < - x%/%241'。看看:'x [12] - x [9]',然後類似地,試圖改變成60的組,'x [4] - x [2]'成爲問題。 – JasonAizkalns