[R] Help on manipulating a data frame
Alfonso Sammassimo
cincinattikid at bigpond.com
Mon Apr 23 14:55:26 CEST 2007
Thankyou for your reply Gabor.
Your code helped me get started in creating id for each week of month. What
I'm really looking for though is a more general application where I can
extract each final week of the month conditional on the pattern of values
(simply plus or minus signs) of the weeks preceding it in that month (i
didnt really explain that in my previous post).
For example, with the data below:
Date Value Sign Week
2005-02.4 2005-02-04 1.67427972 1 1
2005-02.5 2005-02-11 0.00000000 0 2
2005-02.6 2005-02-18 0.14221382 1 3
2005-02.7 2005-02-25 -0.85633254 -1 4
2005-03.8 2005-03-04 2.22073856 1 1
2005-03.9 2005-03-11 -0.07011803 -1 2
2005-03.10 2005-03-18 1.00035730 1 3
2005-03.11 2005-03-25 -2.48430869 -1 4
2005-04.12 2005-04-01 -0.04747211 -1 1
2005-04.13 2005-04-08 0.18975338 1 2
2005-04.14 2005-04-15 -3.54552994 -1 3
2005-04.15 2005-04-22 0.51426586 1 4
2005-04.16 2005-04-29 -1.52599565 -1 5
if I wanted to show the last week of any months where the pattern of the
signs of the three preceding weeks was "1,-1,1" , then the following would
be returned:
Date Value Sign Week
2005-03.11 2005-03-25 -2.48430869 -1 4
2005-04.16 2005-04-29 -1.52599565 -1 5
I would greatly appreciate any hint or example which might lead me the right
way on this.
Thankyou,
Alf Sammassimo
----- Original Message -----
From: "Gabor Grothendieck" <ggrothendieck at gmail.com>
To: "Alfonso Sammassimo" <cincinattikid at bigpond.com>
Cc: <r-help at stat.math.ethz.ch>
Sent: Monday, April 23, 2007 2:31 PM
Subject: Re: [R] Help on manipulating a data frame
> Do you mean you want to return the first row for each mont for
> which the value > 0?
>
> In that case try this. The first group of lines recreates your
> data frame and calls it DF. by causes f to operate on a subset of
> rows comprising one month extracting the first row for which
> the value is positive and also adding in the week number.
> do.call rbinds the results from each month altogether.
>
> Input <- "2007-01-05 -1.52377151
> 2007-01-12 1.04787390
> 2007-01-19 0.61647047
> 2007-01-26 1.87864283
> 2007-02-02 0.54992405
> 2007-02-09 1.96850069
> 2007-02-16 0.26850159
> 2007-02-23 1.56305144
> 2007-03-02 -4.19500573
> 2007-03-09 0.77127814
> 2007-03-16 0.32387312
> 2007-03-23 2.02163219
> 2007-03-30 0.63175605
> 2007-04-06 1.33346284
> 2007-04-13 0.96021569"
> DF <- read.table(textConnection(Input), col.names = c("Date", "Value"),
> colClasses = c("Date", "numeric"))
>
> f <- function(x) cbind(x, Week = seq_len(nrow(x)))[which.max(x$Value >
> 0),]
> do.call("rbind", by(DF, format(DF$Date, "%Y-%m"), f))
>
> On 4/22/07, Alfonso Sammassimo <cincinattikid at bigpond.com> wrote:
>> Hi R-experts,
>>
>>
>>
>> I have a large set of weekly data in this format:
>>
>>
>>
>> 2007-01-05 -1.52377151
>> 2007-01-12 1.04787390
>> 2007-01-19 0.61647047
>> 2007-01-26 1.87864283
>> 2007-02-02 0.54992405
>> 2007-02-09 1.96850069
>> 2007-02-16 0.26850159
>> 2007-02-23 1.56305144
>> 2007-03-02 -4.19500573
>> 2007-03-09 0.77127814
>> 2007-03-16 0.32387312
>> 2007-03-23 2.02163219
>> 2007-03-30 0.63175605
>> 2007-04-06 1.33346284
>> 2007-04-13 0.96021569
>>
>>
>>
>> How might this data be sorted to something like this?:
>>
>>
>>
>> Date Week of Month Value
>>
>> 2007-01-05 1 -1.52377151
>> 2007-01-12 2 1.04787390
>> 2007-01-19 3 0.61647047
>> 2007-01-26 4 1.87864283
>>
>> 2007-02-02 1 0.54992405
>>
>>
>>
>> My aim is to return the last value of every month where the previous
>> values
>> in that month were negative values, hence the need to split the data by
>> month. Any guide as to how this might this be possible without a loop?
>>
>>
>>
>> Any help would be much appreciated.
>>
>>
>>
>> Thanks,
>>
>>
>>
>> Alf Sammassimo
>>
>> Melbourne, Australia
>>
>> ______________________________________________
>> 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.
>>
>
More information about the R-help
mailing list