[R] array searches

Murali Menon feanor0 at hotmail.com
Fri Feb 23 09:11:19 CET 2007


Hi,

This is truly amazing stuff. Inspired by Jim's and Olivier's suggestions, 
I'm trying to expand it to work with a m x n matrix, where the first column 
is dates and the next columns are all signals. I dare say a suitable 
application of 'apply' should work.

Thanks a ton.
Murali


>From: "jim holtman" <jholtman at gmail.com>
>To: "Murali Menon" <feanor0 at hotmail.com>
>CC: r-help at stat.math.ethz.ch
>Subject: Re: [R] array searches
>Date: Fri, 16 Feb 2007 10:21:40 -0500
>
>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 <feanor0 at hotmail.com> 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 at 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?

_________________________________________________________________

fast as 1 year



More information about the R-help mailing list