try this: > x <- scan(textConnection("30/01/2007 0 + 31/01/2007 -1 + 01/02/2007 -1 + 02/02/2007 -1 + 03/02/2007 1 + 04/02/2007 1 + 05/02/2007 1 + 06/02/2007 1 + 07/02/2007 1 + 08/02/2007 1 + 09/02/2007 0 + 10/02/2007 0 + 11/02/2007 0 + 12/02/2007 1 + 13/02/2007 1 + 14/02/2007 1 + 15/02/2007 0 + 16/02/2007 0 + "), what=list(date="", value=0)) Read 18 records > x$date <- as.Date(x$date, "%d/%m/%Y") > # determine the breaks > x.breaks <- c(TRUE, diff(x$value) != 0) > # determine the value at the break; assume that it is the minimum > x.bdate <- x$date[x.breaks] > data.frame(date=x.bdate[cumsum(x.breaks)], value=x$value) date value 1 2007-01-30 0 2 2007-01-31 -1 3 2007-01-31 -1 4 2007-01-31 -1 5 2007-02-03 1 6 2007-02-03 1 7 2007-02-03 1 8 2007-02-03 1 9 2007-02-03 1 10 2007-02-03 1 11 2007-02-09 0 12 2007-02-09 0 13 2007-02-09 0 14 2007-02-12 1 15 2007-02-12 1 16 2007-02-12 1 17 2007-02-15 0 18 2007-02-15 0 > > >
On 2/16/07, Murali Menon <[EMAIL PROTECTED]> wrote: > > Folks, > > I have a dataframe comprising a column of dates and a column of signals > (-1, > 0, 1) that looks something like this: > > 30/01/2007 0 > 31/01/2007 -1 > 01/02/2007 -1 > 02/02/2007 -1 > 03/02/2007 1 > 04/02/2007 1 > 05/02/2007 1 > 06/02/2007 1 > 07/02/2007 1 > 08/02/2007 1 > 09/02/2007 0 > 10/02/2007 0 > 11/02/2007 0 > 12/02/2007 1 > 13/02/2007 1 > 14/02/2007 1 > 15/02/2007 0 > 16/02/2007 0 > > What I need to do is for each signal *in reverse chronological order* to > find the date that it first appeared. So, for the zero on 16/02/2007 and > 15/02/2007, the 'inception' date would be 15/02/2007, because the day > before, the signal was 1. Likewise, the 'inception' date for the signal 1 > on > 08/02/2007 and the five days prior, would be 03/02/2007. I need to create > a > structure of inception dates that would finally look as follows: > > -1 31/01/2007 > -1 31/01/2007 > -1 31/01/2007 > 1 03/02/2007 > 1 03/02/2007 > 1 03/02/2007 > 1 03/02/2007 > 1 03/02/2007 > 1 03/02/2007 > 0 09/02/2007 > 0 09/02/2007 > 0 09/02/2007 > 1 12/02/2007 > 1 12/02/2007 > 1 12/02/2007 > 0 15/02/2007 > 0 15/02/2007 > > Is there a clever way of doing this? My sadly C-oriented upbringing can > only > think in terms of for-loops. > > Thanks! > > Murali > > _________________________________________________________________ > The average US Credit Score is 675. The cost to see yours: $0 by Experian. > > ______________________________________________ > R-help@stat.math.ethz.ch 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. > -- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem you are trying to solve? [[alternative HTML version deleted]] ______________________________________________ R-help@stat.math.ethz.ch 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.