如何获得R中重复值的首次出现?

如何获得R中重复值的首次出现?,r,R,所以我有这样的数据: 01/01 1 <= saves row index 01/02 1 01/03 1 01/04 1 01/05 0 01/06 1 <= saves row index 01/07 1 01/08 -1 01/09 1 <= saves row index 01/10 1 我不太明白怎么弄到这个。非常感谢您的帮助 我们可以使用rleid library(data.table) setDT(df1)[, if(al

所以我有这样的数据:

01/01   1 <= saves row index
01/02   1
01/03   1
01/04   1
01/05   0
01/06   1 <= saves row index
01/07   1
01/08   -1
01/09   1 <= saves row index
01/10   1

我不太明白怎么弄到这个。非常感谢您的帮助

我们可以使用
rleid

library(data.table)
setDT(df1)[, if(all(v1==1)) .I[1L] , rleid(v1)]$V1
#[1] 1 6 9
或使用
base R

with(df1, which(c(TRUE, v1[-1] !=  v1[-nrow(df1)]) & v1==1))
#[1] 1 6 9
数据
df1我们可以使用
rleid

library(data.table)
setDT(df1)[, if(all(v1==1)) .I[1L] , rleid(v1)]$V1
#[1] 1 6 9
或使用
base R

with(df1, which(c(TRUE, v1[-1] !=  v1[-nrow(df1)]) & v1==1))
#[1] 1 6 9
数据
df1用词来说,你可以说:“
x
等于1并且刚刚改变”,即:

换句话说,你可以说:“
x
等于1,并且刚刚改变”,即:


我的类似想法是
我认为这是一个非常优雅的解决方案。谢谢是否有类似的解决方法来获取最后一次重复出现的情况?我的类似想法是
i这是一个非常优雅的解决方案。谢谢是否有类似的解决方法来获取最后一次重复出现的事件?
df = data.frame(
    time = paste0("01/0", 1:9),
    x = c(1, 1, 1, 1, 0, 1, 1, -1, 1)
)

which(
    # x equals 1
    (df$x == 1) &
    # x has changed (always treat as true for first x)
    (c(1, diff(df$x)) != 0 )
)