2016-05-04 24 views
0

私はRプログラミングで新しいです。私は以下のデータセットを持っています。 C1列が重複していてC2が小さいサンプルを削除したいと思います。どうやってやるの?別の行を考慮して重複行を削除するにはどうすればよいですか?

myds <- data.frame(C1 = c(3,5,7,5,3),C2 = c(1,4,3,2,5), C3=c('a', 'b', 'a', 'c', 'b')) 

オリジナルデータセットは、私は以下のようになるために私のデータのデータセットを希望

C1 C2 C3 
--- --- --- 
3 1 a 
5 4 b 
7 3 a 
5 2 c 
3 5 b 

です。

C1 C2 C3 
--- --- --- 
5 4 b 
7 3 a 
3 5 b 
+2

私はライブラリ 'となるだろう(データ表) ; –

+0

または '基底R''集合体(。〜C1、df1myds [order(-df1myds $ C2)]、FUN = headのようなユニークな(setDT(myds)[order(-C2)]、by =" C1 " 、1) ' – akrun

答えて

1

あなたは試みることができる:

library(dplyr) 
group_by(myds, C1) %>% arrange(desc(C2)) %>% slice(1) 
Source: local data frame [3 x 3] 
Groups: C1 [3] 

    C1 C2  C3 
    (dbl) (dbl) (fctr) 
1  3  5  b 
2  5  4  b 
3  7  3  a 
2

をあなたが最初にあなたのデータフレームを並べ替えることができます:

myds <- myds[order(myds$C1, -myds$C2),] 

そしてduplicatedを使用します。

myds[!duplicated(myds$C1),] 

    C1 C2 C3 
5 3 5 b 
2 5 4 b 
3 7 3 a 
+0

本当に' C1'でソートする必要はありません。 '-C2'でソートするだけで十分でしょう –

関連する問題