R 从向量中删除至少x次未重复的值

R 从向量中删除至少x次未重复的值,r,duplicates,unique,duplicate-removal,R,Duplicates,Unique,Duplicate Removal,给定一个向量: 例如: 使用a[a%in%a[duplicated(a)]]I可以删除不重复的值。但是,它仅适用于仅存在一次的值 我将如何继续删除这三次中不存在的所有值?(或更多,在其他情况下) 预期结果将是: 2 2 5 3 5 3 2 5 3 删除1和4,因为它们只出现两次和一次,相当简单(比使用ave更长,但可能更容易理解): x您可以使用ave功能在一行中完成此操作: a[ave(a, a, FUN=length) >= 3] # [1] 2 2 5 3 5 3 2 5 3 调

给定一个向量:

例如:

使用
a[a%in%a[duplicated(a)]]
I可以删除不重复的值。但是,它仅适用于仅存在一次的值

我将如何继续删除这三次中不存在的所有值?(或更多,在其他情况下)

预期结果将是:

2 2 5 3 5 3 2 5 3

删除1和4,因为它们只出现两次和一次,相当简单(比使用
ave
更长,但可能更容易理解):


x您可以使用
ave
功能在一行中完成此操作:

a[ave(a, a, FUN=length) >= 3]
# [1] 2 2 5 3 5 3 2 5 3
调用
ave(a,a,FUN=length)
返回,对于向量
a
中的每个元素
a[i]
,总次数
a[i]
出现在
a
中。然后,您可以将
a
子集,限制为总次数为3次或更多的索引。

a[a%以%排序(唯一(a))[table(a)>=3]
作为主题的变体。
x <- c(1,2,2,4,5,3,5,3,2,1,5,3)
tt <- table(x)   ## tabulate
## find relevant values
ttr <- as.numeric(names(tt)[tt>=3])
x[x %in% ttr]  ## subset
a[ave(a, a, FUN=length) >= 3]
# [1] 2 2 5 3 5 3 2 5 3