[R] puzzled by math on date-time objects
William Dunlap
wdunlap at tibco.com
Tue Mar 10 19:37:17 CET 2009
Your problem arises in R 2.8.1 (and 2.9.0-devel, but not 2.7.0) when
length(POSIXct object) is even, because median(POSIXct object)
passes a POSIXct object to median.default, which calls
sum() in the even length case.
> median( as.POSIXct(Sys.time()))
[1] "2009-03-10 10:28:46 PDT"
> median( as.POSIXct(rep(Sys.time(),2)))
Error in Summary.POSIXct(c(1236706132.54740, 1236706132.54740), na.rm =
FALSE) :
'sum' not defined for "POSIXt" objects
> traceback()
4: stop(gettextf("'%s' not defined for \"POSIXt\" objects", .Generic),
domain = NA)
3: Summary.POSIXct(c(1236706132.54740, 1236706132.54740), na.rm = FALSE)
2: median.default(as.POSIXct(rep(Sys.time(), 2)))
1: median(as.POSIXct(rep(Sys.time(), 2)))
> version
_
platform i686-pc-linux-gnu
arch i686
os linux-gnu
system i686, linux-gnu
status
major 2
minor 8.1
year 2008
month 12
day 22
svn rev 47281
language R
version.string R version 2.8.1 (2008-12-22)
Bill Dunlap
TIBCO Software Inc - Spotfire Division
wdunlap tibco.com
------------------------------------------------------------
[R] puzzled by math on date-time objects
Denis Chabot chabotd at globetrotter.net
Tue Mar 10 16:44:07 CET 2009
Previous message: [R] nonmetric clustering
Next message: [R] perform subgroup meta-analysis and create forest plot
displaying subgroups
Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi,
I don't understand the following. When I create a small artificial set
of date information in class POSIXct, I can calculate the mean and the
median:
a = as.POSIXct(Sys.time())
a = a + 60*0:10; a
[1] "2009-03-10 11:30:16 EDT" "2009-03-10 11:31:16 EDT" "2009-03-10
11:32:16 EDT"
[4] "2009-03-10 11:33:16 EDT" "2009-03-10 11:34:16 EDT" "2009-03-10
11:35:16 EDT"
[7] "2009-03-10 11:36:16 EDT" "2009-03-10 11:37:16 EDT" "2009-03-10
11:38:16 EDT"
[10] "2009-03-10 11:39:16 EDT" "2009-03-10 11:40:16 EDT"
median(a)
[1] "2009-03-10 11:35:16 EDT"
mean(a)
[1] "2009-03-10 11:35:16 EDT"
But for real data (for this post, a short subset is in object c) that
I have converted into a POSIXct object, I cannot calculate the median
with median(), though I do get it with summary():
c
[1] "2009-02-24 14:51:18 EST" "2009-02-24 14:51:19 EST" "2009-02-24
14:51:19 EST"
[4] "2009-02-24 14:51:20 EST" "2009-02-24 14:51:20 EST" "2009-02-24
14:51:21 EST"
[7] "2009-02-24 14:51:21 EST" "2009-02-24 14:51:22 EST" "2009-02-24
14:51:22 EST"
[10] "2009-02-24 14:51:22 EST"
class(c)
[1] "POSIXt" "POSIXct"
median(c)
Erreur dans Summary.POSIXct(c(1235505080.6, 1235505081.1), na.rm =
FALSE) :
'sum' not defined for "POSIXt" objects
One difference is that in my own date-time series, some events are
repeated (the original data contained fractions of seconds). But then,
why can I get a median through summary()?
summary(c)
Min. 1st
Qu. Median
"2009-02-24 14:51:18 EST" "2009-02-24 14:51:19 EST" "2009-02-24
14:51:20 EST"
Mean 3rd
Qu. Max.
"2009-02-24 14:51:20 EST" "2009-02-24 14:51:21 EST" "2009-02-24
14:51:22 EST"
Thanks in advance,
Denis Chabot
sessionInfo()
R version 2.8.1 Patched (2009-01-19 r47650)
i386-apple-darwin9.6.0
locale:
fr_CA.UTF-8/fr_CA.UTF-8/C/C/fr_CA.UTF-8/fr_CA.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] doBy_3.7 chron_2.3-30
loaded via a namespace (and not attached):
[1] Hmisc_3.5-2 cluster_1.11.12 grid_2.8.1 lattice_0.17-20
tools_2.8.1
More information about the R-help
mailing list