2015-01-26 304 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