以重复模式标记第二个位置

Tre*_*lof 2 r

我有一个数字向量,下面有一个重复的模式(通常在重新开始之前2,3,4,5,6,但有时一个或多个不会因为假期而在那里等).我想在每个集合中标记第二次出现(通常是3但不总是如果例如2不存在它将是4我想要标记).任何想法如何标记基本上是一周的第二个工作日?

代码示例:

test_vector <- c(2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 
2, 3, 4, 2, 3, 4, 6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 
6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 
2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 
3, 4, 5, 6, 2, 3, 4, 5, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 
6, 2, 3, 4, 5, 6, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 3, 
4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 
5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 
6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 2, 3, 4, 5, 6, 
2, 3, 4, 5, 6, 3, 4, 5, 6, 2)
Run Code Online (Sandbox Code Playgroud)

Rol*_*and 5

inds <- which(c(TRUE, diff(test_vector) != 1L) & #find start of week
              c(TRUE, diff(test_vector[-1]) == 1L, FALSE) #protect against one-day weeks
              ) + 1L
test_vector[inds]
#[1] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 3 3 3 4 3 3 4 3 3 3 3 3 3 3 3 3 3 3 3 3 4
Run Code Online (Sandbox Code Playgroud)