I tried a date by date forecast of a time series and it seems to be too wild. How can I aggregate the date into weeks or months as required? Thanks. The input looks like ID datadate("YYYY-MM-DD") value_for_day -- ----- ------- -- ------ -------- and I want to be able to change it to ID dataweek value_for_week or ID datamonth value_ for_ month
?aggregate I would transfer your date character sting into a date object (as.POSIXct) and then extract month or week numbers (?format) from this vector and use them as indices for the aggregate function. There may be more elegant ways though.... HTH Jannis --- analyst41 at hotmail.com <analyst41 at hotmail.com> schrieb am Mi, 12.1.2011:> Von: analyst41 at hotmail.com <analyst41 at hotmail.com> > Betreff: [R] aggredating date data > An: r-help at r-project.org > Datum: Mittwoch, 12. Januar, 2011 20:20 Uhr > I tried a date by date forecast of a > time series and it seems to be > too wild.? How can I aggregate the date into weeks or > months as > required? > > Thanks. > > The input looks like > > ID datadate("YYYY-MM-DD")? value_for_day > --? ???-----? ? ? ? > ? ? ? ? ? ? ? ? > ? ? ? ? ------- > --? ???------? ? ? > ? ? ? ? ? ? ? ? > ? ? ? ???-------- > > and I want to be able to change it to > > ID dataweek value_for_week > > or > > ID datamonth value_ for_ month > > ______________________________________________ > R-help at r-project.org > 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. >
I like the zoo package, and there are several helpful examples. library(zoo) You can easily convert your data into a zoo object using I was actually just doing this using this function: LoadReturnData=function(x){ ret = read.csv(x) ret = zoo(ret[ , -1], as.Date(ret[ , 1])) colnames(ret) = toupper(colnames(ret)) return(ret) } fnd = LoadReturnData('/Data/SomeSpecialData.csv') My data is already in weeks, and aggregating to months is easy using as.yearmon MonthIndex=as.yearmon(index(fnd)) aggregate(.~MonthIndex, data=fnd, sum) If you have daily data and you need weeks, then you'll have to create a vector to indicate the week, like the MonthIndex above. e.g. for 365 days WeekIndex = rep(1:53, each=7, length.out=365) On Wed, Jan 12, 2011 at 2:20 PM, analyst41@hotmail.com < analyst41@hotmail.com> wrote:> I tried a date by date forecast of a time series and it seems to be > too wild. How can I aggregate the date into weeks or months as > required? > > Thanks. > > The input looks like > > ID datadate("YYYY-MM-DD") value_for_day > -- ----- ------- > -- ------ -------- > > and I want to be able to change it to > > ID dataweek value_for_week > > or > > ID datamonth value_ for_ month > > ______________________________________________ > R-help@r-project.org 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. >[[alternative HTML version deleted]]