从矢量中删除至少x次重复的值

Ale*_*Ale 4 r unique duplicates duplicate-removal

给出一个向量:

例如.:

a = c(1, 2, 2, 4, 5, 3, 5, 3, 2, 1, 5, 3)
Run Code Online (Sandbox Code Playgroud)

使用a[a%in%a[duplicated(a)]]我可以删除不重复的值.但是,它仅适用于仅出现一次的值.

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

预期结果将是:

2 2 5 3 5 3 2 5 3
Run Code Online (Sandbox Code Playgroud)

删除1和4,因为它们只出现两次和一次

jos*_*ber 8

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

a[ave(a, a, FUN=length) >= 3]
# [1] 2 2 5 3 5 3 2 5 3
Run Code Online (Sandbox Code Playgroud)

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


Ben*_*ker 5

合理简单(比使用更长ave但可能更容易理解):

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
Run Code Online (Sandbox Code Playgroud)