如何获得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 )
)