[R] distributing a value for a given month across the number of weeks in that month
Dimitri Liakhovitski
dimitri.liakhovitski at gmail.com
Tue Jul 13 19:36:07 CEST 2010
Thank you very much, Gabor!
Dimitri
On Tue, Jul 13, 2010 at 12:25 PM, Gabor Grothendieck
<ggrothendieck at gmail.com> wrote:
> On Tue, Jul 13, 2010 at 11:19 AM, Dimitri Liakhovitski
> <dimitri.liakhovitski at gmail.com> wrote:
>> Actually,
>> I realized that my task was a bit more complicated as I have different
>> (let's call them) Markets and the dates repeat themselves across
>> markets. And the original code from Gabor gives an error - because
>> dates repeate themselves and apparently zoo cannot handle it. So, I
>> had to do program a way around it (below). It works.
>> However, I am wondering if there is a shorter/more elegant way of doing it?
>> Thank you!
>> Dimitri
>>
>> ### My original data frame is a bit more complicated - dates repeat
>> themselves for 2 markets:
>> monthly<-data.frame(month=c(20100301,20100401,20100501,20100301,20100401,20100501),monthly.value=c(100,200,300,10,20,30),market=c("Market
>> A","Market A", "Market A","Market B","Market B", "Market B"))
>> monthly$month<-as.character(monthly$month)
>> monthly$month<-as.Date(monthly$month,"%Y%m%d")
>> (monthly)
>>
>
> Assuming the dates for each market are the same we split them into a
> zoo object with one market per column and following the same approach
> as last time we use by in place of ave. The lines marked ## are same
> as last time.
> Be sure you are using zoo 1.6-4 from CRAN since it makes use of the
> na.locf features added in that version.
>
>> z <- read.zoo(monthly, split = "market")
>> all.dates <- seq(start(z), as.Date(as.yearmon(end(z)), frac = 1), by = "day") ##
>> mondays <- all.dates[weekdays(all.dates) == "Monday"] ##
>> weeks <- na.locf(z, xout = mondays) ##
>> do.call(rbind, by(weeks, as.yearmon(mondays),
> + function(x) zoo(x/nrow(x), rownames(x))))
> Market.A Market.B
> 2010-03-01 20 2
> 2010-03-08 20 2
> 2010-03-15 20 2
> 2010-03-22 20 2
> 2010-03-29 20 2
> 2010-04-05 50 5
> 2010-04-12 50 5
> 2010-04-19 50 5
> 2010-04-26 50 5
> 2010-05-03 60 6
> 2010-05-10 60 6
> 2010-05-17 60 6
> 2010-05-24 60 6
> 2010-05-31 60 6
>
--
Dimitri Liakhovitski
Ninah Consulting
www.ninah.com
More information about the R-help
mailing list