所以当我使用
时>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)会发生什么?无论如何,我们可以报告他们说当我们使用这个数字作为情节时?
答案 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
)
答案 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