2016-06-29 9 views
0

こんにちは私はフランスの工学の学生です。私は大学のプロジェクトを持っています。現在、列の値が似ている場合、データの行を削除したいと考えています。私のデータベースは以下のようになります。複数の変数に基づいてデータフレームから重複する行を削除

node event grade std    date     groupe   name 
6794 57605 100  659 2016-04-08 10:59:45.882267 cm1_mat_001_eap_001 c8 

6794 84007  0  659 2016-04-29 13:44:47.156998 cm1_mat_001_eap_001 c8 

6794 86729 100  659 2016-05-02 14:17:02.945516 cm1_mat_001_eap_001 c8 

6794 88921 100  659 2016-05-04 09:00:52.157544 cm1_mat_001_eap_001 c8 

6797 10119  0  659 2016-05-17 08:27:28.371022 cm1_mat_001_eap_001 c8 

6794 98291 100  729 2016-05-12 08:27:13.920052 cm1_mat_001_eap_001 c8 

6794 99711 100  729 2016-05-13 06:50:13.60001 cm1_mat_001_eap_001 c8 

6812 87995 100  796 2016-05-03 07:33:31.108374 cm1_mat_002_eap_003 c8 

現在、私はそこの列内の値が類似している場合は、行を削除したいと思います。 私の場合、 "node"と "std"の列の値が似ている場合、この条件に基づいて重複行を削除して最初の行を保持したいと思います。あなたが見ることができるように、私が作成したい条件が「ノード」と「STD」は類似している場合にのみ、重複データを考慮しているため

6794 57605 100  659 2016-04-08 10:59:45.882267 cm1_mat_001_eap_001 c8 

6797 10119  0  659 2016-05-17 08:27:28.371022 cm1_mat_001_eap_001 c8 

6794 98291 100  729 2016-05-12 08:27:13.920052 cm1_mat_001_eap_001 c8 

6812 87995 100  796 2016-05-03 07:33:31.108374 cm1_mat_002_eap_003 c8 

は、4行目は残りました。この場合、 "std"の値は前の行と同じですが、 "node"内の値ではありません。

ありがとうございました。 :)

+0

'install.packagesは( "data.table")を用いて、 data.table :: setDT(df); data.table :: setkey(df、node、std);ユニーク(df) ' –

答えて

3

基地R、

df[!duplicated(df[c('node', 'std')]),] 
+1

大変ありがとう@Sotosとダミーの質問には申し訳ありません。良い一日を ! :D –

+0

答えを補うためにいくつかの行を追加するだけです。 #new_uniqは重複のない一意のデータセットを含みます。 new_uniq < - 削除される重複行のデータセット[!重複(データセット[C( '日付'、 '国家')])、] ビュー(new_uniq) #Indexes: duplicate_indexes < - ( duplicated(データセット[c( 'Date'、 'State')]))) duplicate_indexes –