2017-10-04 21 views
1

データフレームをファイリングして、col0で類似の名前の行を削除したいとします。私は2つ以上の同様の名前が発生し、col1の値が最も高い行を保持したい。列の値に基づく行のフィルタリング

col0    col1  col2  col3  col4   col4   col5 
hsa-let-7a-5p 2.487304 15.04636 8.400422 1.702870e-10 1.084728e-07 13.867065 
hsa-let-7a-5p 2.491626 13.70345 7.414093 4.002913e-09 1.274928e-06 10.808433 
hsa-let-7d-5p 3.074776 11.36059 6.799401 2.977052e-08 6.321274e-06 8.887774 
hsa-miR-7d-5p 3.123776 11.84145 6.210222 2.069015e-07 3.050719e-05 7.032421 
hsa-miR-122-5p -2.521427 13.91681 -6.132486 2.673240e-07 3.050719e-05 6.703794 
hsa-miR-122-5p 2.602304 11.53867 6.083099 3.145797e-07 3.050719e-05 6.636385 

私の例では、row2、row4およびrow6を保持したいと考えています。 機能に関するヒント

+0

であると仮定すると、行列はありますか? – akrun

+0

データフレーム。申し訳ありません – user2300940

+1

data.frameは重複する行名を持つことができません – akrun

答えて

1

data.frameとすると、重複する行名を持つことはできません。したがって、matrixであるか、data.frameの最初の列である必要があります。最初の列、つまり 'col0'でグループ化され、 'col1'の最大値の行が

library(dplyr) 
df1 %>% 
    group_by(col0) %>% 
    slice(which.max(col1)) 
関連する問題