检查独特元素

时间:2013-02-27 14:09:50

标签: r

只是一个简单的问题。 我有一个数据框(只显示一个向量),如下所示:

  

CLN1
     一个
     b
     一个
     一个
     ç
     d
     一个
  ....

我想要以下输出:

  

CLN1
     b
     ç
     d

换句话说,我想删除所有复制的项目。函数“unique”和“duplicatelicated”返回输出,包括一次表示的复制元素。我想明确删除它。

3 个答案:

答案 0 :(得分:9)

您可以使用setdiff

R> v <- c(1,1,2,2,3,4,5)
R> setdiff(v, v[duplicated(v)])
[1] 3 4 5

答案 1 :(得分:5)

您可以使用count包中的plyr来计算项目的出现次数,并删除所有出现多次的人。

library(plyr)
l = c(1,2,3,3,4,5,6,6,7)
count_l = count(l)
  x freq
1 1    1
2 2    1
3 3    2
4 4    1                                                                           
5 5    1                                                                           
6 6    2                                                                           
7 7    1  
l[!l %in%  with(count_l, x[freq > 1])]
[1] 1 2 4 5 7  

请注意!,即NOT。你当然把它放在一个oneliner上:

l[!l %in%  with(count(l), x[freq > 1])]

答案 2 :(得分:2)

使用table的另一种方式:

使用@ juba的数据:

as.numeric(names(which(table(v) == 1)))
# [1] 3 4 5

对于OP的数据,由于它是字符输出,因此不需要as.numeric

names(which(table(v) == 1))
# [1] "b" "c" "d"