Skip to content

aggregate() does not return POSIXct object correctly (PR#12887)

3 messages · rene.locher at zhaw.ch, Peter Dalgaard, Gabor Grothendieck

#
Full_Name: Rene Locher
Version: 2.7.2 Patched (2008-09-12 r46541)
OS: XP
Submission from: (NULL) (160.85.231.40)


dat <- data.frame(event=factor(c("A","A","B")),
                  time=as.POSIXct(c("2008-01-10","2008-01-01","2008-01-04")))

min(dat$time)
## "2008-01-01 CET"
## as expected

aggregate(dat$time,by=list(event=dat$event),min)
## results in
##    event          x
##  1     A 1199142000
##  2     B 1199401200

## I expected:
##    event                x
##  1     A "2008-01-01 CET"
##  2     B "2008-01-04 CET"

## my system:

sessionInfo()
## R version 2.7.2 Patched (2008-09-12 r46541)
## i386-pc-mingw32
##
## locale:
## LC_COLLATE=German_Switzerland.1252;LC_CTYPE=German_Switzerland.1252;LC_MONETARY=German_Switzerland.1252;LC_NUMERIC=C;LC_TIME=German_Switzerland.1252
##
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base

Kind regards

Rene Locher                                     E-Mail: rene.locher at zhaw.ch
Institute for Data Analysis and Process Design     Tel:    +41 58 934 7810
Zurich University of Applied Sciences              Fax:    +41 58 935 7810
Rosenstrasse 3                   
Postfach
CH-8401 Winterthur                                http://www.idp.zhaw.ch
#
rene.locher at zhaw.ch wrote:
This is as documented, possibly annoying, but not a bug.

aggregate() is documented to build on tapply() for which the discarding
of class is documented on ?tapply. The root cause is unlist():
$A
[1] "2008-01-01 CET"

$B
[1] "2008-01-04 CET"
A          B
1199142000 1199401200

and a partial rationale is that unlist() wouldn't know what to do if the
arguments had different classes.
The workaround is, of course, just to stick the class back on.
#
On Tue, Sep 16, 2008 at 11:22 AM, Peter Dalgaard
<P.Dalgaard at biostat.ku.dk> wrote:
Another workaround is:

https://stat.ethz.ch/pipermail/r-help/2008-September/173139.html