3 回答

TA貢獻(xiàn)1921條經(jīng)驗 獲得超9個贊
使用diff和cumsum:
paste0("Group_", cumsum(c(1, diff(x) != 0)))
#[1] "Group_1" "Group_1" "Group_1" "Group_2" "Group_2" "Group_2" "Group_3" "Group_4" "Group_4" "Group_5" "Group_5"
(如果您的值是浮點值,則可能必須避免!=使用,而是使用公差。)

TA貢獻(xiàn)1811條經(jīng)驗 獲得超5個贊
groupdata2中的group()可以使用l_starts方法根據(jù)組起點列表創(chuàng)建組。通過設(shè)置n為auto,它會自動查找組開始:
x <- c(1,1,1,2,2,2,3,2,2,1,1)
groupdata2::group(x, n = "auto", method = "l_starts")
## # A tibble: 11 x 2
## # Groups: .groups [5]
## data .groups
## <dbl> <fct>
## 1 1 1
## 2 1 1
## 3 1 1
## 4 2 2
## 5 2 2
## 6 2 2
## 7 3 3
## 8 2 4
## 9 2 4
## 10 1 5
## 11 1 5
還有一個differs_from_previous()函數(shù)可以找到與先前值相差某個閾值的值或值的索引。
# The values to start groups at
differs_from_previous(x, threshold = 1,
direction = "both")
## [1] 2 3 2 1
# The indices to start groups at
differs_from_previous(x, threshold = 1,
direction = "both",
return_index = TRUE)
## [1] 4 7 8 10
- 3 回答
- 0 關(guān)注
- 634 瀏覽
添加回答
舉報