[Rd] cut.Date and cut.POSIXt problem
Marc Schwartz
marc_schwartz at comcast.net
Thu Mar 20 22:14:35 CET 2008
Hi all,
Apologies for the delay in my engaging in this thread. I was traveling
this week.
The problem that Gabor raised was caused by the patch that I submitted
to fix a problem with the referenced functions when using 'months' and
'years' as the interval. The prior versions were problematic:
https://stat.ethz.ch/pipermail/r-devel/2008-January/048004.html
The patch fixed the error, but since I used hist.Date() as the reference
model and did not note the subtle difference in cut.Date() relative to
specifying the breaks increment value, this functionality was lost when
the same modification was made to the code in cut.Date().
Roger's patch helps, but does not totally remedy the situation. One also
needs to modify the method used for specifying the max value 'end' for
the breaks in order to include the max 'x' Date value in the result.
Hence, I am attaching proposed patches against R-devel for
base:::dates.R and base:::datetime.R.
I am also attaching a patch for tests:::reg-tests-1.R to add a check for
this situation to the regression tests that were also added subsequent
to that prior set of patches that I had submitted.
If perhaps Roger and Gabor could so some testing on these patches before
they are considered for inclusion into the R-devel tree, it would be
helpful to check to see if I have missed something else here.
Thanks for raising this issue.
Regards,
Marc Schwartz
Roger D. Peng wrote:
> Seems changes in r44116 force the interval to be single months (or
> years) instead of whatever the user specified. I think the attached
> patches correct this.
>
> Interestingly, 'cut' and 'seq' allow for the 'breaks' specification to
> be something like "3 months" but the documentation for 'hist' does not
> allow for this type of specification.
>
> -roger
>
> Gabor Grothendieck wrote:
>> cut.Date and cut.POSIXt indicate that the breaks argument
>> can be an integer followed by a space followed by "year", etc.
>> but it seems the integer is ignored.
>>
>> For example, I assume that breaks = "3 months" is supposed
>> to cut it into quarters but, in fact, it cuts it into months as if
>> 3 had not been there.
>>
>>> d <- seq(Sys.Date(), length = 12, by = "month")
>>> cut(d, "3 months")
>> [1] 2008-03-01 2008-04-01 2008-05-01 2008-06-01 2008-07-01 2008-08-01
>> 2008-09-01 2008-10-01 2008-11-01 2008-12-01 2009-01-01 2009-02-01
>> Levels: 2008-03-01 2008-04-01 2008-05-01 2008-06-01 2008-07-01
>> 2008-08-01 2008-09-01 2008-10-01 2008-11-01 2008-12-01 2009-01-01
>> 2009-02-01
>>> cut(as.POSIXct(d), "3 months")
>> [1] 2008-03-01 2008-04-01 2008-05-01 2008-06-01 2008-07-01 2008-08-01
>> 2008-09-01 2008-10-01 2008-11-01 2008-12-01 2009-01-01 2009-02-01
>> Levels: 2008-03-01 2008-04-01 2008-05-01 2008-06-01 2008-07-01
>> 2008-08-01 2008-09-01 2008-10-01 2008-11-01 2008-12-01 2009-01-01
>> 2009-02-01
>>> cut(as.POSIXlt(d), "3 months")
>> [1] 2008-03-01 2008-04-01 2008-05-01 2008-06-01 2008-07-01 2008-08-01
>> 2008-09-01 2008-10-01 2008-11-01 2008-12-01 2009-01-01 2009-02-01
>> Levels: 2008-03-01 2008-04-01 2008-05-01 2008-06-01 2008-07-01
>> 2008-08-01 2008-09-01 2008-10-01 2008-11-01 2008-12-01 2009-01-01
>> 2009-02-01
>>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dates.R.patch
Type: text/x-patch
Size: 1082 bytes
Desc: not available
Url : https://stat.ethz.ch/pipermail/r-devel/attachments/20080320/0de154b9/attachment.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: datetime.R.patch
Type: text/x-patch
Size: 1037 bytes
Desc: not available
Url : https://stat.ethz.ch/pipermail/r-devel/attachments/20080320/0de154b9/attachment-0001.bin
-------------- next part --------------
A non-text attachment was scrubbed...
Name: reg-tests-1.R.patch
Type: text/x-patch
Size: 1935 bytes
Desc: not available
Url : https://stat.ethz.ch/pipermail/r-devel/attachments/20080320/0de154b9/attachment-0002.bin
More information about the R-devel
mailing list