Conditional selection of rows
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