2015-01-26 657 views
2

我需要一行代码来搜索数字向量并返回出现次数。例计算重复次数的次数R代码

a=c(15,32,27, 63, 15,99, 32,32) 

dup=unique(a[duplicated(V.Ints)]) 
len=length(unique(duplicated(dup))) 

我得到:

> dup 
#[1] 15, 32 

> len 
#[1] 2 

,但我需要的是:

> dup 
#[1] 15, 32 

> len 
#[1] 5 

谢谢!

回答

2

您可以

table(a) 
# a 
# 15 27 32 63 99 
# 2 1 3 1 1 

计数频率可以过滤只查找重复的

Filter(function(x) x>1, table(a)) 
# a 
# 15 32 
# 2 3 
names(Filter(function(x) x>1, table(a))) 
# [1] "15" "32" 

,你可以采取的总和查找重复的总长度

sum(Filter(function(x) x>1, table(a))) 
# [1] 5 
3

Arun在评论中的建议是要走的路:

> sum(a %in% c(15,32)) 
#[1] 5 

更多的一般用法:

sum(a %in% unique(a[duplicated(a)])) 

或者一个班轮在弗里克先生的做法的精神:

sum(a %in% names(which(table(a) > 1))) 
2

另一个变化是抓住所有重复的值,则使用length()对于lenunique()对于dup

x <- a[duplicated(a) | duplicated(a, fromLast=TRUE)] 

length(x) 
# [1] 5 
unique(x) 
# [1] 15 32