Re: Positions of earliest dates for each month in a list of dates
- To: mathgroup at smc.vnet.net
- Subject: [mg106429] Re: Positions of earliest dates for each month in a list of dates
- From: dh <dh at metrohm.com>
- Date: Tue, 12 Jan 2010 04:49:39 -0500 (EST)
- References: <higdki$kg9$1@smc.vnet.net>
Hi, one way of doing this (assuming the data are in chronological order, otherwise sort them first): 1) Split the data according to year and month. 2) Take first entry of every sublist here is the code: First /@ Split[myDates, Equal[Take[#1, 2], Take[#2, 2]] &] Daniel Garapata wrote: > I have a list of 20+ years of dates (from earliest to latest) in > DateList format: > > A subset of the list should suffice to illustrate: > > myDates = {{1984,12,7,0,0,0}, {1985,1,3,0,0,0},{1985,1,4,0,0,0}, > {1985,1,7,0,0,0} > ,{1985,2,1,0,0,0},{1985,2,4,0,0,0},{1985,2,5,0,0,0},{1985,3,4,0,0,0}, > {1985,3,5,0,0,0}, > {1985,3,6,0,0,0},...}; > > The list does not include all dates, weekends and it may not include > some holidays or other seemingly arbitrary days. > > I need to find out the positions of the the first date appearing in > each month. > > So, from the sample of myDates above I need to get: > > {1, 2, 5, 8} > > Corresponding to the positions for the dates: > > {{1984,12,7,0,0,0}, > {1985,1,3,0,0,0}, > {1985,2,1,0,0,0}, > {1985,3,4,0,0,0}} > > I've tried working with Position, Split, SplitBy, Ordering, Sort, and > Sortby, but haven't made much progress. > > I've also tried creating an index for the dates like this: > > SplitBy[Transpose[Join[{myDates}, {Range[1, Length[myDates]]}]]]; > > and hoped to use its output to sort or split the list into sublists of > each month then just use Part to take the first date in each month > with its paired index, but I still can't figure out how to do it. > > I've got the feeling I've missed a simple solution to this, any help > much appreciated. >