Julia
2012-Jun-15 16:49 UTC
[R] Wrong computation of time differenze in POSIXct - additional digits
Hello,
I wanted to compute the time differenze between to times:
first =as.POSIXct( "2012-06-15 16:32:39.0025 CEST")
second = as.POSIXct("2012-06-15 16:32:39.0086 CEST")
second - first
The result is
Time difference of 0.006099939 secs
instead of just 0.0061 secs
So R adds aditional numbers after the result.
I know I could round it in this case.
But I am working with a large data set and need to always get the
correct result.
difftime() does not work correct either.
Has anybody a suggestion how to get the correct result?
Thank you
Julia
David Winsemius
2012-Jun-15 17:18 UTC
[R] Wrong computation of time differenze in POSIXct - additional digits
On Jun 15, 2012, at 12:49 PM, Julia wrote:> Hello, > > I wanted to compute the time differenze between to times: > > first =as.POSIXct( "2012-06-15 16:32:39.0025 CEST") > second = as.POSIXct("2012-06-15 16:32:39.0086 CEST") > second - first > > The result is > Time difference of 0.006099939 secs > > instead of just 0.0061 secs > So R adds aditional numbers after the result.It's a floating point representation issue. You don't really want to change that value, but are asking to see something different: > round ( second - first, 4) Time difference of 0.0061 secs> I know I could round it in this case. > But I am working with a large data set and need to always get the > correct result. > > difftime() does not work correct either. > > Has anybody a suggestion how to get the correct result?Use a computer system that runs on exact arithmetic? Read FAQ 7.31 http://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-doesn_0027t-R-think-these-numbers-are-equal_003f (And expect to read about 4-6 similar messages in the next hour.)> > Thank you > Julia > > ______________________________________________ > R-help at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.David Winsemius, MD West Hartford, CT
arun
2012-Jun-15 18:14 UTC
[R] Wrong computation of time differenze in POSIXct - additional digits
Hi,
I checked the same with strptime.? It is the rounding issue.
Try this:
dat1<-data.frame(datetime=c("2012-06-15 16:32:39.0025
CEST","2012-06-15 16:32:39.0086 CEST"))
?op<-options(digits.secs=4)
?dat1$datetime<- strptime(dat1$datetime, "%Y-%m-%d %H:%M:%OS")
formatC(as.numeric(difftime(dat1[2,1],dat1[1,1],units="secs")),format="f",digits=4)
[1] "0.0061"
#or,
?formatC(as.numeric(diff(dat1$datetime)),format="f",digits=4)
[1] "0.0061"
A.K.
----- Original Message -----
From: Julia <Julia.Schmitt at gmx.de>
To: r-help at stat.math.ethz.ch
Cc:
Sent: Friday, June 15, 2012 12:49 PM
Subject: [R] Wrong computation of time differenze in POSIXct - additional digits
Hello,
I wanted to compute the time differenze between to times:
first =as.POSIXct( "2012-06-15 16:32:39.0025 CEST")
second? = as.POSIXct("2012-06-15 16:32:39.0086 CEST")
second - first
The result is
Time difference of 0.006099939 secs
instead of just 0.0061 secs
So R adds aditional? numbers after the result.
I know I could round it in this case.
But I am working with a large data set and need to always get the
correct result.
difftime() does not work correct either.
Has anybody a suggestion how to get the correct result?
Thank you
Julia
______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.