我们在R中报告时间的详细程度如何?

时间:2015-08-06 04:54:21

标签: r datetime time plot posixct

所以当我使用

>strptime(paste(as.character(as.POSIXct(as.numeric(substr(1438293919327731275,1,10)),origin="1970-01-01")),
+                substr(1438293919327731275,11,13),sep="."),"%Y-%m-%d %H:%M:%OS")
[1] "2015-07-30 17:05:19"

我想知道substr(14-19)会发生什么?无论如何,我们可以报告他们说当我们使用这个数字作为情节时?

2 个答案:

答案 0 :(得分:2)

要回答您的问题,是的,R图可以处理包含亚秒分数的POSIXct时间:

x <- 1:2
y <- as.POSIXct(c(1438293919.3277, 1438293919.4682),origin="1970-01-01")
#[1] "2015-07-31 08:05:19 EST" "2015-07-31 08:05:19 EST"
plot(y ~ x, yaxt="n")
axis.POSIXct(
  2,
  at=as.POSIXct(axTicks(2),origin="1970-01-01"), format="%OS2",
  las=2, cex.axis=0.7
)

enter image description here

答案 1 :(得分:2)

正如约书亚乌尔里希已经说过的那样,秒的小部分不会丢失, 但默认情况下不显示。如果要查看小数部分,请设置 选项&#34; digit.secs&#34;到所需的小数位数。 但至少在我的系统上,我得不到超过7位小数:

#============================================================
# With option "digit.secs"=NULL

options(digits.secs=NULL)

t1 <- as.POSIXct(as.numeric(substr(1438293919327731275,1,10)),
                 origin="1970-01-01")

t2 <- strptime(paste(as.character(t),
                     substr(1438293919327731275,11,13),
                     sep="."),
               "%Y-%m-%d %H:%M:%OS")

t3 <- strptime(paste(as.character(t),
                     substr(1438293919327731275,11,19),
                     sep="."),
               "%Y-%m-%d %H:%M:%OS")

t1
t2
t3

t2-t1
t3-t1

#==============================================================
# With option "digit.secs"=9

options(digits.secs=9)

t1 <- as.POSIXct(as.numeric(substr(1438293919327731275,1,10)),
                 origin="1970-01-01")

t2 <- strptime(paste(as.character(t),
                     substr(1438293919327731275,11,13),
                     sep="."),
               "%Y-%m-%d %H:%M:%OS")

t3 <- strptime(paste(as.character(t),
                     substr(1438293919327731275,11,19),
                     sep="."),
               "%Y-%m-%d %H:%M:%OS")

t1
t2
t3

t2-t1
t3-t1

结果:

> #============================================================
> # With option "digit.secs"=NULL
> 
> options(digits.secs=NULL)

> t1 <- as.POSIXct(as.numeric(substr(1438293919327731275,1,10)),
+                  origin="1970-01-01")

> t2 <- strptime(paste(as.character(t),
+                      substr(1438293919327731275,11,13),
+                      sep="."),
+                "% ..." ... [TRUNCATED] 

> t3 <- strptime(paste(as.character(t),
+                      substr(1438293919327731275,11,19),
+                      sep="."),
+                "% ..." ... [TRUNCATED] 

> t1
[1] "2015-07-31 00:05:19 CEST"

> t2
[1] "2015-07-31 00:05:19 CEST"

> t3
[1] "2015-07-31 00:05:19 CEST"

> t2-t1
Time difference of 0.3269999 secs

> t3-t1
Time difference of 0.3277311 secs

> #==============================================================
> # With option "digit.secs"=9
> 
> options(digits.secs=9)

> t1 <- as.POSIXct(as.numeric(substr(1438293919327731275,1,10)),
+                  origin="1970-01-01")

> t2 <- strptime(paste(as.character(t),
+                      substr(1438293919327731275,11,13),
+                      sep="."),
+                "% ..." ... [TRUNCATED] 

> t3 <- strptime(paste(as.character(t),
+                      substr(1438293919327731275,11,19),
+                      sep="."),
+                "% ..." ... [TRUNCATED] 

> t1
[1] "2015-07-31 00:05:19 CEST"

> t2
[1] "2015-07-31 00:05:19.327 CEST"

> t3
[1] "2015-07-31 00:05:19.327731 CEST"

> t2-t1
Time difference of 0.3269999 secs

> t3-t1
Time difference of 0.3277311 secs