[R] Conditional selection of rows 
    Thomas Lumley 
    tlumley at u.washington.edu
       
    Tue Nov  9 16:24:19 CET 2004
    
    
  
On Tue, 9 Nov 2004, F Z wrote:
> Hi,
>
> I have a data.frame with several variables and 50,000 observations.
> i.e.
> data[1:2,1:7]
> Iteration Day Production.Type tsUSusc tsASusc tsULat tsALat
>        1   0         Generic   17965 8833053      0      0
>        1   1         Generic   17965 8833053      0      0
>        .
>        .
>        .
>        1 199         Generic   17237 8141028     26  23131
>        2 127         Generic   15828 7307583     92  63463
>
> I would like to extract only the observations (rows) for the last "day" for 
> each "iteration" and store them in a data frame.
>
> I tried lapply nested in a for loop without success.  Any help will be 
> greatly appreciated!
If you reverse the ordering you are then looking for the first Day in each 
Iteration, which can be done efficiently with duplicated().
data <- data[order(data$Iteration, data$Day, decreasing=TRUE),]
subset <- data[!duplicated(data$Iteration),]
If you are sure that the data are in order to begin with you could just 
reverse the entire data set (  data <- data[nrow(data):1,] ), but I'm 
always reluctant to assume this.
 	-thomas
    
    
More information about the R-help
mailing list