Re: How to split a daily DateList by week?
- To: mathgroup at smc.vnet.net
- Subject: [mg114914] Re: How to split a daily DateList by week?
- From: "Sjoerd C. de Vries" <sjoerd.c.devries at gmail.com>
- Date: Thu, 23 Dec 2010 03:50:27 -0500 (EST)
- References: <iepd94$fq3$1@smc.vnet.net>
Perhaps DateDifference could be of good use for you. DateDifference
can give differences in a number of time units including quarters and
weeks. So you could write:
toQuarter[date_List] :=
Floor[DateDifference[{date[[1]], 1, 1, 0, 0, 0}, date,
"Quarter"][[1]] + 1]
toWeeks[date_List] :=
Floor[DateDifference[{date[[1]], 1, 1, 0, 0, 0}, date,
"Week"][[1]] + 1]
I'm not sure whether your week numbers are OK this way. If you're
counting full weeks from Jan 1 this is OK. If you're counting ISO week
numbers you have to find something more complicated (see
http://en.wikipedia.org/wiki/Seven-day_week#Week_numbering).
Cheers -- Sjoerd
On Dec 21, 6:17 am, "Sohn Hyun-U" <hs... at student.ethz.ch> wrote:
> Hi there,
>
> Suppose I have a weekdaily DateList of financial data. Sometimes, a day i=
s
> missing due to holidays etc.
> I would like to split it by quarter (Q), calendar month (M), and calendar=
week (W), for example to compute intra-${Q,M,W} statistics.
>
> For months, I did the following:
>
> splitByMonth[ts_] := (
> maxYear = Max[ts[[All, 1, 1]]];
> minYear = Min[ts[[All, 1, 1]]];
> dummy =
> Table[Select[ts, #[[1, 1]] == year && #[[1, 2]] == month &=
], {year,
> minYear, maxYear}, {month, 1, 12}] // Sort;
> Flatten[dummy, {1, 2}]
> )
>
> The problem with weeks is that there is no counter in the DateList format=
, so the only way I at the moment uses date conversions to strings of "DayN=
ame", which looks rather crummy, particularly if there are days missing som=
etimes due to holidays etc.
>
> I'm sure there is a better way but I can't find it. Can anyone here help =
me out?
>
> Kind regards,
> Hyun-U Sohn