2013-09-08 3 views
1

У меня очень большой файл данных, и моя цель - найти 5 строк, которые имеют 5 самых больших значений в столбце V4, поэтому я отсортировал данные и получил самые большие значения, а затем с помощью логического выражения попытался найти все строки. Проблема заключается в том, что несмотря на то, что я могу найти первые 5 значений, логическое выражение только дает мне 3 строки вместо 5.Найти 5 строк с наибольшими значениями столбцов

> h<-head(sort.int(d$V4, decreasing=T), 5) 
> h 
[1] 65506 39681 32306 29028 27535 
> d[d$V4==h,] 
      V1 V2 V3 V4       V5 
373135 1504839 1990 1 27535 77963;4;21;3;49;64;13;113;7;6 
1365437 2141627 2010 1 39681   8;258;236;39;86;28;58 
1797593 1822695 1992 1 32306        0 

Итак, почему я не могу найти соответствующие строки для 65506 и 29028? Есть ли другой способ решить эту проблему?

Благодаря

+0

, который работает, но порядок будет потерян! –

ответ

8

Попробуйте функцию order(), она дает вам прямо, что вы хотите:

d[order(d$V4,decreasing=T)[1:5],]