Do you want just the values (i.e., a vector), or do you also want the corresponding rows of the data frame?

What if there is a tie, or do you know in advance that within any particular subset the values of B are unique?

What if the subset that meets the constraints has fewer than 3 unique values? (which I think is the case in your example)


   tail(  unique( sort( df$B[  df$A=='x' & df$C < 2 ] ) ) ,3 )

Should do it (but I haven't tested).

Why does it get messy with over 100 columns?
I'll pretend for the moment that you have exactly 100 columns:
1) you will be doing this many times, each time with a different sets of 3 columns? 2) you want the three highest values in each of 98 columns based on constraints on the other two? 3) you want the three highest values of B based on constraints on all of the other 99 columns?

Depending on what changes when more columns are involved, you might be able to loop over columns with syntax like,

for (nm in c('B','D','E') ) tail( unique( sort( df[[nm]][ df$A=='x' & df$C < 2 ] ) ) ,3 )

-Don

At 1:36 AM -0700 8/26/09, Noah Silverman wrote:
Hi,

I'm trying to find an easy way to do this.

I want to select the top three values of a specific column in a subset of rows in a data.frame. I'll demonstrate.

A    B    C
x    2    1
x    4    1
x    3    2
y    1    5
y    2    6
y    3    8


I want the top 3 values of B from the data.frame where A=X and C <2

I could extract all the rows where C<2, then sort by B, then take the first 3. But that seems like the wrong way around, and it also will get messy with real data of over 100 columns.

Any suggestions?

______________________________________________
R-help@r-project.org mailing list
https://*stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://*www.*R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.


--
--------------------------------------
Don MacQueen
Environmental Protection Department
Lawrence Livermore National Laboratory
Livermore, CA, USA
925-423-1062

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to