# [R] selection based on dates

arun smartpink111 at yahoo.com
Tue Jul 30 15:00:55 CEST 2013

```Hi,
If the rows are already ordered:
x1<- as.data.frame(x)
x[with(x1,ave(seq_along(V2),V2,FUN=function(x) !x%in%min(x)))==1,]
#     [,1]     [,2] [,3]
#[1,] "1/5/13" "15" "25"
#[2,] "1/9/13" "15" "28"
#[3,] "2/5/13" "18" "35"
#[4,] "2/9/13" "18" "38"

#otherwise
x[with(x1,unlist(tapply(as.Date(V1,"%m/%d/%y"),list(V2),function(x) x!=min(x)),use.names=FALSE)),]
#     [,1]     [,2] [,3]
#[1,] "1/5/13" "15" "25"
#[2,] "1/9/13" "15" "28"
#[3,] "2/5/13" "18" "35"
#[4,] "2/9/13" "18" "38"

A.K.

----- Original Message -----
From: Andras Farkas <motyocska at yahoo.com>
To: "r-help at r-project.org" <r-help at r-project.org>
Cc:
Sent: Tuesday, July 30, 2013 8:13 AM
Subject: [R] selection based on dates

Dear All

I have:

a <-c("1/1/13",15,20)
b <-c("1/5/13",15,25)
c <-c("1/9/13",15,28)
d <-c("2/1/13",18,30)
e <-c("2/5/13",18,35)
f <-c("2/9/13",18,38)
x <-matrix(c(a,b,c,d,e,f),ncol=3,byrow=TRUE)

What I would like to do is to eliminate certain rows of this matrix based on the date column values. As you can see, in the second column my values (15 and 18) repeat 3 times each, so this column serves as an ID number if you will. Thus each ID numbers show up with 3 different date values in the first column. Now I would like to eliminate the rows with the earliest date per ID number. My result should look like this:

z <-x[-c(1,4),]

as allways, your help is greatly appreciated,

thanks,

Andras

______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help