我需要一行代码来搜索数字向量并返回出现次数。例如
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
谢谢!
答案 0 :(得分: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)))
答案 1 :(得分: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
答案 2 :(得分:2)
另一种变体是获取所有重复的值,然后使用length()
len
和unique()
dup
x <- a[duplicated(a) | duplicated(a, fromLast=TRUE)]
length(x)
# [1] 5
unique(x)
# [1] 15 32