[R] sample nth day data in each month
Gabor Grothendieck
ggrothendieck at gmail.com
Tue Nov 20 04:08:29 CET 2007
Suggest you read the article in R News 4/1 on dates and times and
try this:
library(zoo)
library(chron)
z <- zoo(101:200, seq(chron("1/1/2000"), length = 100))
zz <- z[with(month.day.year(time(z)), day >= 21 & month %% 2 == 1)]
zz[!duplicated(as.yearmon(time(zz)))]
On Nov 19, 2007 9:57 PM, Carles Fan <eexchange at gmail.com> wrote:
> many thanks Gabor.
>
> Q1:
> if i want to do with the following 2 conditions, how can i do?
> condition 1) every n-th day
> condition 2) every x-month <----- x = 1 to 12
>
> Eg:
> condition 1) every 21-th day
> condition 2) every 2-month
>
> 1st data: 2000-01-21 100
> 2nd data: 2000-03-21 101
> 3rd data: 2000-05-21 103
> ...
> ...
> ...
>
> Q2:
> how can i loop thur 'z" from start to the end with the above conditions?
> eg:
> condition 1) every n-th day
> condition 2) every 2-month
>
> 1st batch run
> 1st data: 2000-01-01 100
> 2nd data: 2000-03-01 104
> 3rd data: 2000-05-01 106
> ...
> ...
> ...
>
> 2nd batch run
> 1st data: 2000-01-02 103
> 2nd data: 2000-03-02 104
> 3rd data: 2000-05-02 106
> ...
> ...
> ...
>
> 3rd batch run
> 1st data: 2000-01-03 103
> 2nd data: 2000-03-03 105
> 3rd data: 2000-05-03 106
> ...
> ...
> ...
>
>
>
>
> On Nov 16, 2007 2:53 AM, Gabor Grothendieck <ggrothendieck at gmail.com> wrote:
> >
> > On Nov 15, 2007 12:54 PM, Carles Fan <eexchange at gmail.com> wrote:
> > > Dear all
> > >
> > > i have a time series containing trading dates and historical stock prices:
> > > Date Price
> > > 10-Jan-2007 100
> > > 11-Jan-2007 101
> > > 13-Jan-2007 99
> > > ......
> > > ......
> > > ......
> > > 10-Nov-2007 200
> > >
> > > i want to sample every 21st data of each month:
> > > 21-Jan-2007 101
> > > 21-Feb-2007 111
> > > 21-Mar-2007 131
> > > ......
> > > ......
> > > ......
> > > 21-Oct-2007 140
> > >
> > > 1) how can i do that?
> > > 2) if some of the dates are non-trading day, how can i tell "R" to use
> > > "modified following" or "following" data?
> >
> >
> > Using zoo, z is some test data. zz is only those points whose day
> > of the month is 21 or more. In the last line we keep only the first
> > point in each month in zz.
> >
> > library(zoo)
> > z <- zoo(101:200, as.Date("2000-01-01") + seq(0, len = 100, by = 2))
> >
> > zz <- z[as.numeric(format(time(z), "%d")) >= 21]
> > zz[!duplicated(as.yearmon(time(zz)))]
> >
>
More information about the R-help
mailing list