2016-03-22 6 views
1

に基づいてすべての行を削除します。基本的な例に続いて、複数の列

v1 <- c("a","b","c","a","b") 
v2 <- c(1,2,3,1,1) 
v3 <- rnorm(5,5) 

dat <- data.frame(cbind(v1,v2,v3)) 

私はv1とv2で同じ値を持つすべての行を削除します。

私は

dat[!duplicated(dat[,c("v1","v2")]),] 

    v1 v2 v3 
1 a 1 6.48929449801677 
2 b 2 4.89050807004701 
3 c 3 5.57089903349316 
5 b 1 4.08152834124853 

を使用することができます。しかし、私はまた、最初の行を削除する重複行を削除します。

誰も簡単な解決策をお持ちですか?たぶん私は識別することができなかった重複していくつかのオプション。

+0

[this post](http://stackoverflow.com/questions/12495345/find-indices-of-duplicated-rows) –

答えて

3

fromLast=TRUEオプションでduplicatedオプションを使用すると、重複を逆方向に検索してから|を使用してすべての重複を取得できます。論理インデックスを否定すると、後でサブセット化する一意の行のインデックスのみが取得されます。

dat[!(duplicated(dat[,c("v1","v2")])| 
    duplicated(dat[,c("v1", "v2")], fromLast=TRUE)),] 
関連する問題