I have a problem with results from difftime being 1 hour different than expected. 2 examples are given below: datetime <- matrix(data=rbind(c("2012-03-31 21:00:00", "2012-04-01 00:00:00", "2012-04-01 03:00:00", "2012-04-01 06:00:00"), c("2012-10-06 21:00:00", "2012-10-07 00:00:00", "2012-10-07 03:00:00", "2012-10-07 06:00:00")), ncol=4, nrow=2) for (row in 1:2) { x <- datetime[row,] x1=x[1:length(x)-1] x2=x[2:length(x)] xd=difftime(x2,x1) print (x) print (xd) } [1] "2012-03-31 21:00:00" "2012-04-01 00:00:00" "2012-04-01 03:00:00" "2012-04-01 06:00:00" Time differences in hours [1] 3 4 3 attr(,"tzone") [1] "" [1] "2012-10-06 21:00:00" "2012-10-07 00:00:00" "2012-10-07 03:00:00" "2012-10-07 06:00:00" Time differences in hours [1] 3 2 3 attr(,"tzone") [1] "" Accurate results would be 3 3 3 (hours) in both cases. The problem occurs randomly, but only around midnight. All the dates between "2012-04-01 06:00:00" and "2012-10-06 21:00:00" are fine. I have seen postings about problems with "POSIXlt" and "POSIXct" accuracy because of truncation rather than rounding of floating point representations. The response was that it was expected behaviour. So my question is this expected behaviour, have I used difftime incorrectly, and if not, is there a set of date/time functions and classes that use integer representation to give more accurate results? I am new to R and I may well be using the wrong set of functions. Garry [[alternative HTML version deleted]]
Hello, Here is the result I get using your script: > sessionInfo() R version 2.15.2 (2012-10-26) Platform: x86_64-suse-linux-gnu (64-bit) [1] "2012-03-31 21:00:00" "2012-04-01 00:00:00" "2012-04-01 03:00:00" [4] "2012-04-01 06:00:00" Time differences in hours [1] 3 3 3 attr(,"tzone") [1] "" [1] "2012-10-06 21:00:00" "2012-10-07 00:00:00" "2012-10-07 03:00:00" [4] "2012-10-07 06:00:00" Time differences in hours [1] 3 3 3 attr(,"tzone") [1] "" Regards, Pascal Le 01/02/2013 16:27, Boots a ?crit :> I have a problem with results from difftime being 1 hour different than expected. 2 examples are given below: > > datetime <- matrix(data=rbind(c("2012-03-31 21:00:00", "2012-04-01 00:00:00", "2012-04-01 03:00:00", "2012-04-01 06:00:00"), > c("2012-10-06 21:00:00", "2012-10-07 00:00:00", "2012-10-07 03:00:00", "2012-10-07 06:00:00")), ncol=4, nrow=2) > > for (row in 1:2) { > x <- datetime[row,] > x1=x[1:length(x)-1] > x2=x[2:length(x)] > xd=difftime(x2,x1) > print (x) > print (xd) > } > > [1] "2012-03-31 21:00:00" "2012-04-01 00:00:00" "2012-04-01 03:00:00" "2012-04-01 06:00:00" > Time differences in hours > [1] 3 4 3 > attr(,"tzone") > [1] "" > [1] "2012-10-06 21:00:00" "2012-10-07 00:00:00" "2012-10-07 03:00:00" "2012-10-07 06:00:00" > Time differences in hours > [1] 3 2 3 > attr(,"tzone") > [1] "" > > Accurate results would be 3 3 3 (hours) in both cases. > The problem occurs randomly, but only around midnight. > All the dates between "2012-04-01 06:00:00" and "2012-10-06 21:00:00" are fine. > > I have seen postings about problems with "POSIXlt" and "POSIXct" accuracy > because of truncation rather than rounding of floating point representations. > The response was that it was expected behaviour. > > So my question is this expected behaviour, have I used difftime incorrectly, and if not, is there a set of date/time functions and classes that use > integer representation to give more accurate results? I am new to R and I may well be using the wrong set of functions. > Garry > > [[alternative HTML version deleted]] > > ______________________________________________ > 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. >
Hi The same with me on Windows Most probably an issue of daylight savings time setting. Sys.timezone() [1] "CET" Regards Petr> -----Original Message----- > From: r-help-bounces at r-project.org [mailto:r-help-bounces at r- > project.org] On Behalf Of Pascal Oettli > Sent: Friday, February 01, 2013 9:18 AM > To: Boots > Cc: R Help > Subject: Re: [R] difftime() out by 1 hour > > Hello, > > Here is the result I get using your script: > > > sessionInfo() > R version 2.15.2 (2012-10-26) > Platform: x86_64-suse-linux-gnu (64-bit) > > > [1] "2012-03-31 21:00:00" "2012-04-01 00:00:00" "2012-04-01 03:00:00" > [4] "2012-04-01 06:00:00" > Time differences in hours > [1] 3 3 3 > attr(,"tzone") > [1] "" > [1] "2012-10-06 21:00:00" "2012-10-07 00:00:00" "2012-10-07 03:00:00" > [4] "2012-10-07 06:00:00" > Time differences in hours > [1] 3 3 3 > attr(,"tzone") > [1] "" > > Regards, > Pascal > > > Le 01/02/2013 16:27, Boots a ?crit : > > I have a problem with results from difftime being 1 hour different > than expected. 2 examples are given below: > > > > datetime <- matrix(data=rbind(c("2012-03-31 21:00:00", "2012-04-01 > 00:00:00", "2012-04-01 03:00:00", "2012-04-01 06:00:00"), > > c("2012-10-06 21:00:00", "2012-10-07 00:00:00", > > "2012-10-07 03:00:00", "2012-10-07 06:00:00")), ncol=4, nrow=2) > > > > for (row in 1:2) { > > x <- datetime[row,] > > x1=x[1:length(x)-1] > > x2=x[2:length(x)] > > xd=difftime(x2,x1) > > print (x) > > print (xd) > > } > > > > [1] "2012-03-31 21:00:00" "2012-04-01 00:00:00" "2012-04-01 03:00:00" > "2012-04-01 06:00:00" > > Time differences in hours > > [1] 3 4 3 > > attr(,"tzone") > > [1] "" > > [1] "2012-10-06 21:00:00" "2012-10-07 00:00:00" "2012-10-07 03:00:00" > "2012-10-07 06:00:00" > > Time differences in hours > > [1] 3 2 3 > > attr(,"tzone") > > [1] "" > > > > Accurate results would be 3 3 3 (hours) in both cases. > > The problem occurs randomly, but only around midnight. > > All the dates between "2012-04-01 06:00:00" and "2012-10-06 21:00:00" > are fine. > > > > I have seen postings about problems with "POSIXlt" and "POSIXct" > > accuracy because of truncation rather than rounding of floating point > representations. > > The response was that it was expected behaviour. > > > > So my question is this expected behaviour, have I used difftime > > incorrectly, and if not, is there a set of date/time functions and > classes that use integer representation to give more accurate results? > I am new to R and I may well be using the wrong set of functions. > > Garry > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > 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. > > > > ______________________________________________ > 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.