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
aggregate() does not return POSIXct object correctly (PR#12887)
3 messages · rene.locher at zhaw.ch, Peter Dalgaard, Gabor Grothendieck
rene.locher at zhaw.ch wrote:
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"
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():
tapply(dat[["time"]],dat$event,min,simplify=FALSE)
$A [1] "2008-01-01 CET" $B [1] "2008-01-04 CET"
unlist(tapply(dat[["time"]],dat$event,min,simplify=FALSE))
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.
O__ ---- Peter Dalgaard ?ster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~~~~~~~~~ - (p.dalgaard at biostat.ku.dk) FAX: (+45) 35327907
On Tue, Sep 16, 2008 at 11:22 AM, Peter Dalgaard
<P.Dalgaard at biostat.ku.dk> wrote:
rene.locher at zhaw.ch wrote:
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"
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():
tapply(dat[["time"]],dat$event,min,simplify=FALSE)
$A [1] "2008-01-01 CET" $B [1] "2008-01-04 CET"
unlist(tapply(dat[["time"]],dat$event,min,simplify=FALSE))
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.
Another workaround is: https://stat.ethz.ch/pipermail/r-help/2008-September/173139.html