簡體   English   中英

R中有多個重復(2次,3次,......)

[英]Multiple duplicates (2 times, 3 times,…) in R

經過一段時間的搜索,我知道這個問題還沒有得到解答。 假設我有以下向量

v <- c("a", "b", "b", "c","c","c", "d", "d", "d", "d")

如何找到重復次數超過1的值

(應為"c","c","c", "d", "d", "d", "d")

超過2個重復

(應為"d", "d", "d", "d"

函數duplicated(v)僅返回具有重復的值。

您可以生成一個table() ,然后檢查v哪些元素是表的相關子集的一部分,例如

R> v <- c("a", "b", "b", "c","c","c", "d", "d", "d", "d")
R> tab <- table(v)
R> tab
v
a b c d 
1 2 3 4 
R> v[v %in% names(tab[tab > 2])]
[1] "c" "c" "c" "d" "d" "d" "d"
R> v[v %in% names(tab[tab > 3])]
[1] "d" "d" "d" "d"

我會用ave寫一個這樣的簡單函數:

myFun <- function(vector, thresh) {
  ind <- ave(rep(1, length(vector)), vector, FUN = length)
  vector[ind > thresh + 1] ## added "+1" to match your terminology
}

這里它適用於“v”:

myFun(v, 1)
# [1] "c" "c" "c" "d" "d" "d" "d"
myFun(v, 2)
# [1] "d" "d" "d" "d"

當然,總有“data.table”:

as.data.table(v)[, N := .N, by = v][N > 1 + 1]$v
# [1] "c" "c" "c" "d" "d" "d" "d"
as.data.table(v)[, N := .N, by = v][N > 2 + 1]$v
# [1] "d" "d" "d" "d"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM