首页 > 解决方案 > R : 查找第 n 个重复项

问题描述

所以我有一个看起来像这样的向量:

x <- c(1,1,1,3,4,5,6,7,7,7,7)

我知道重复函数,但我希望 R 在第 n 个重复项之后返回一个布尔向量。因此,假设我有兴趣知道重复(或更多)的第三个数字,因此返回是:

FALSE  FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  FALSE TRUE  TRUE

标签: rduplicates

解决方案


一种可能是:

ave(duplicated(x), x, FUN = cumsum) >= 2

 [1] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE

如果元素的运行可以重复:

x <- c(1,1,1,3,4,5,6,7,7,7,7,1,1,1)

rleid <- with(rle(x), rep(seq_along(values), lengths))
ave(duplicated(rleid), rleid, FUN = cumsum) >= 2

 [1] FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE FALSE
[13] FALSE  TRUE

推荐阅读