4

簡単な質問です。次のようなデータフレームがあります(1つのベクトルのみが表示されています)。

cln1
A
b
A
A
c dA ...。
_

次の出力が欲しいです:

cln1
b
c
d

つまり、複製されたすべてのアイテムを削除したいと思います。関数「unique」および「duplicated」は、一度だけ表された複製された要素を含む出力を返します。完全に削除したいと思います。

4

3 に答える 3

9

あなたはそのために使うことができますsetdiff

R> v <- c(1,1,2,2,3,4,5)
R> setdiff(v, v[duplicated(v)])
[1] 3 4 5
于 2013-02-27T14:13:08.437 に答える
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ます。もちろん、これをワンライナーに入れます。

l[!l %in%  with(count(l), x[freq > 1])]
于 2013-02-27T14:15:27.460 に答える
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"
于 2013-02-27T14:23:07.710 に答える