[Date Index]
[Thread Index]
[Author Index]
Re: Rearranging a data array containing calendrical as well as data entries.
*To*: mathgroup at smc.vnet.net
*Subject*: [mg54927] Re: Rearranging a data array containing calendrical as well as data entries.
*From*: DrBob <drbob at bigfoot.com>
*Date*: Sun, 6 Mar 2005 00:56:28 -0500 (EST)
*References*: <20050305164826.HZQM3789.lakermmtao05.cox.net@boris>
*Reply-to*: drbob at bigfoot.com
*Sender*: owner-wri-mathgroup at wolfram.com
Ah! You're right, but the fix is simple. I thought each line had up to 7 data values (a week per line), but actually they have up to 8. Careless of me not to count them!
Change 7 to 8 in dateValue, and that takes care of it.
If the (max) table width is variable, on the other hand, we'd need different code.
Bobby
On Sat, 5 Mar 2005 10:48:16 -0600, Hans Michel <hmichel at cox.net> wrote:
> Does not match.
>
> January has 31 days.
>
> The USGS data is well ordered.
>
> Hans
>
> "DrBob" <drbob at bigfoot.com> wrote in message
> news:d09cct$d0a$1 at smc.vnet.net...
>> Here's a start:
>>
>> rawData=Import["test.txt","Table"]
>>
>>
> {{1999,1,1,489.82,489.82,495.01,495.01,495.01,495.01,495.01,490.51},{199
> 9,1,2,
>> 490.51,490.51,490.51,490.51,490.38,490.38,490.38,490.38},{
>>
>>
> 1999,1,3,490.38,510.38,510.38,510.38,510.38,510.38,528.66,528.66},{1999,
> 1,4,
>> 528.66,528.66,528.66,501.68,501.68,501.68,501.68},{1999,2,
>>
>>
> 1,501.68,496.44,496.44,496.44,496.44,496.44,478.72,478.72},{1999,2,2,478
> .72,
>> 478.72,478.72,452.82,452.82,452.82,452.82,452.82},{1999,2,
>>
>>
> 3,450.19,450.19,450.19,450.19,450.19,443.98,443.98,443.98},{1999,2,4,443
> .98,
>> 443.98,440.14,440.14},{1999,3,1,440.14,440.14,440.14,453.64,
>>
>>
> 453.64,453.64,453.64,453.64},{1999,3,2,503.98,503.98,503.98,503.98,503.9
> 8,
>> 500.84,500.84,500.84},{1999,3,3,500.84,500.84,473.48,473.48,
>>
>>
> 473.48,473.48,473.48,463.19},{1999,3,4,463.19,463.19,463.19,463.19,457.5
> 4,
>> 457.54,457.54}}
>>
>> Clear[dateValue, month, twoDigit]
>> twoDigit[i_Integer?Positive] := StringJoin @@
>> PadLeft[Characters@ToString@i, 2, "0"]
>> month[i_Integer] /; 1 <= i <= 12 := month[i] = {"Jan", "Feb", "Mar",
>> "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}[[i]]
>> dateValue@{yr_, mo_, wk_, values___} := Transpose@{twoDigit[# + 7(
>> wk - 1)] <> month@mo <> ToString@yr & /@ Range@Length@{values},
>> {values}}
>> Flatten[dateValue /@ rawData, 1]
>>
>> {{"01Jan1999", 489.82},
>> {"02Jan1999", 489.82},
>> {"03Jan1999", 495.01},
>> {"04Jan1999", 495.01},
>> {"05Jan1999", 495.01},
>> {"06Jan1999", 495.01},
>> {"07Jan1999", 495.01},
>> {"08Jan1999", 490.51},
>> {"08Jan1999", 490.51},
>> {"09Jan1999", 490.51},
>> {"10Jan1999", 490.51},
>> {"11Jan1999", 490.51},
>> {"12Jan1999", 490.38},
>> {"13Jan1999", 490.38},
>> {"14Jan1999", 490.38},
>> {"15Jan1999", 490.38},
>> {"15Jan1999", 490.38},
>> {"16Jan1999", 510.38},
>> {"17Jan1999", 510.38},
>> {"18Jan1999", 510.38},
>> {"19Jan1999", 510.38},
>> {"20Jan1999", 510.38},
>> {"21Jan1999", 528.66},
>> {"22Jan1999", 528.66},
>> {"22Jan1999", 528.66},
>> {"23Jan1999", 528.66},
>> {"24Jan1999", 528.66},
>> {"25Jan1999", 501.68},
>> {"26Jan1999", 501.68},
>> {"27Jan1999", 501.68},
>> {"28Jan1999", 501.68},
>> {"01Feb1999", 501.68},
>> {"02Feb1999", 496.44},
>> {"03Feb1999", 496.44},
>> {"04Feb1999", 496.44},
>> {"05Feb1999", 496.44},
>> {"06Feb1999", 496.44},
>> {"07Feb1999", 478.72},
>> {"08Feb1999", 478.72},
>> {"08Feb1999", 478.72},
>> {"09Feb1999", 478.72},
>> {"10Feb1999", 478.72},
>> {"11Feb1999", 452.82},
>> {"12Feb1999", 452.82},
>> {"13Feb1999", 452.82},
>> {"14Feb1999", 452.82},
>> {"15Feb1999", 452.82},
>> {"15Feb1999", 450.19},
>> {"16Feb1999", 450.19},
>> {"17Feb1999", 450.19},
>> {"18Feb1999", 450.19},
>> {"19Feb1999", 450.19},
>> {"20Feb1999", 443.98},
>> {"21Feb1999", 443.98},
>> {"22Feb1999", 443.98},
>> {"22Feb1999", 443.98},
>> {"23Feb1999", 443.98},
>> {"24Feb1999", 440.14},
>> {"25Feb1999", 440.14},
>> {"01Mar1999", 440.14},
>> {"02Mar1999", 440.14},
>> {"03Mar1999", 440.14},
>> {"04Mar1999", 453.64},
>> {"05Mar1999", 453.64},
>> {"06Mar1999", 453.64},
>> {"07Mar1999", 453.64},
>> {"08Mar1999", 453.64},
>> {"08Mar1999", 503.98},
>> {"09Mar1999", 503.98},
>> {"10Mar1999", 503.98},
>> {"11Mar1999", 503.98},
>> {"12Mar1999", 503.98},
>> {"13Mar1999", 500.84},
>> {"14Mar1999", 500.84},
>> {"15Mar1999", 500.84},
>> {"15Mar1999", 500.84},
>> {"16Mar1999", 500.84},
>> {"17Mar1999", 473.48},
>> {"18Mar1999", 473.48},
>> {"19Mar1999", 473.48},
>> {"20Mar1999", 473.48},
>> {"21Mar1999", 473.48},
>> {"22Mar1999", 463.19},
>> {"22Mar1999", 463.19},
>> {"23Mar1999", 463.19},
>> {"24Mar1999", 463.19},
>> {"25Mar1999", 463.19},
>> {"26Mar1999", 457.54},
>> {"27Mar1999", 457.54},
>> {"28Mar1999", 457.54}}
>>
>> Bobby
>>
>>
>> On Wed, 2 Mar 2005 22:29:16 -0500 (EST), Gilmar
>> <gilmar.rodriguez at nwfwmd.state.fl.us> wrote:
>>
>>> Dear Mathematica User Friends:
>>>
>>> I have a file containing flow data from the USGS, in the following
>>> format:
>>>
>>> 1999 1 1 489.82 489.82 495.01 495.01 495.01 495.01 495.01 490.51
>>> 1999 1 2 490.51 490.51 490.51 490.51 490.38 490.38 490.38 490.38
>>> 1999 1 3 490.38 510.38 510.38 510.38 510.38 510.38 528.66 528.66
>>> 1999 1 4 528.66 528.66 528.66 501.68 501.68 501.68 501.68
>>> 1999 2 1 501.68 496.44 496.44 496.44 496.44 496.44 478.72 478.72
>>> 1999 2 2 478.72 478.72 478.72 452.82 452.82 452.82 452.82 452.82
>>> 1999 2 3 450.19 450.19 450.19 450.19 450.19 443.98 443.98 443.98
>>> 1999 2 4 443.98 443.98 440.14 440.14
>>> 1999 3 1 440.14 440.14 440.14 453.64 453.64 453.64 453.64 453.64
>>> 1999 3 2 503.98 503.98 503.98 503.98 503.98 500.84 500.84 500.84
>>> 1999 3 3 500.84 500.84 473.48 473.48 473.48 473.48 473.48 463.19
>>> 1999 3 4 463.19 463.19 463.19 463.19 457.54 457.54 457.54
>>>
>>> This format is used by the USGS to compress their data records.
>>>
>>> Each row contains:
>>> Year, Month Number(1 to 12), Row Number (1 to 4), and data entries.
>>>
>>> The first row:
>>> 1999 1 1 489.82 489.82 495.01 495.01 495.01 495.01 495.01 490.51
>>> contains flow values corresponding to: January 1 to January 8,
>>> of the year 1999.
>>>
>>> The second row:
>>> 1999 1 2 490.51 490.51 490.51 490.51 490.38 490.38 490.38 490.38
>>> contains flow values corresponding to: January 9 to January 16,
>>> of the year 1999.
>>>
>>> The third row:
>>> 1999 1 3 490.38 510.38 510.38 510.38 510.38 510.38 528.66 528.66
>>> contains flow values corresponding to: January 17 to January 24,
>>> of the year 1999.
>>>
>>> The fourth row:
>>> 1999 1 4 528.66 528.66 528.66 501.68 501.68 501.68 501.68
>>> contains flow values corresponding to: January 25 to January 31,
>>> of the year 1999.
>>>
>>> I think that you get the picture of how this data set is assembled.
>>>
>>> What I need is a program that can turn the above mentioned horizontal
>>> array, into a simple vertical array, containing two columns;
>>> the first column contains the dates when the data was collected,
>>> and the second column contains the flow values; i.e.
>>>
>>> 01Jan1999 489.82
>>> 02Jan1999 489.82
>>> 03Jan1999 495.01
>>> etc.
>>>
>>> If I give the program a starting date, and ending date for an
>>> arbitrary record; the program should be able to allocate two
>>> arrays to:
>>>
>>> (1.) put the dates between the starting date, and ending date,
>>> to form the first column of the vertical array.
>>>
>>> (2.)match correctly those dates with the data to appear in
>>> the second column of the vertical array.
>>>
>>> The program should discern between regular years, and leap
>>> years. Those of you that are still using FORTRAN, and have
>>> experienced how difficult it is to deal with date functions
>>> using FORTRAN, might sympathize with my request.
>>>
>>> P.S. To get a larger set of USGS flow data to test your program
>>> please download the following file:
>>>
>>> http://www.gilmarlily.netfirms.com/download/flow.dat
>>>
>>> Thank you for your help!
>>>
>>>
>>>
>>>
>>
>>
>>
>> --
>> DrBob at bigfoot.com
>> www.eclecticdreams.net
>>
>
>
>
>
>
--
DrBob at bigfoot.com
www.eclecticdreams.net
Prev by Date:
**Re: Rearranging a data array containing calendrical as well as data entries.**
Next by Date:
**How to set NumberForm in plots**
Previous by thread:
**Re: Rearranging a data array containing calendrical as well as data entries.**
Next by thread:
**Help Mathematica**
| |