POSIXct对象显示为数字

时间:2017-03-30 21:04:08

标签: r posixct

k <- file.Folder$LPRS.time[1] + lag*60
> k
[1] "2017-03-31 00:15:00 IST"
> file.Folder$start.time[1] <- file.Folder$LPRS.time[1] + lag*60
> file.Folder$start.time[1]
[1] 1490899500

file.Folder $ start.time是刚刚在最后一步创建的新列。 为什么它在场景1中作为日期正确显示,在场景2中作为数字显示?

2 个答案:

答案 0 :(得分:0)

选项1:您可以使用lubridate包,因为算法很简单。

library("lubridate")
x <- ymd_hms("2017-03-31 00:15:00 IST", tz = "Asia/Istanbul")
lag = hours(4)
x + lag * 60

结果:

[1] "2017-04-10 00:15:00 EEST"

选项2:转换数字结果as.POSIXct: as.POSIXct(1490899500,tz =“Asia / Istanbul”,origin =“1970-01-01 00:00.00 UTC”)

答案 1 :(得分:0)

回答问题&#34;为什么?&#34;我们需要查看str(file.Folder)的结果,特别是file.Folder$start.time的类:这个简短的测试会话显示分配给非时间的数字列会将结果强制转换为基础秒,因为时代的开始。如果使用"["

分配单个值,则不会产生此效果
> test <- data.frame(tm=Sys.time() , num=1)
> test$num[1] <- test$tm +60
> test
                   tm        num
1 2017-03-30 16:49:03 1490917803
> test <- cbind(test, other.tm=Sys.time())
> test$othernum <- test$tm +60
> test
                   tm        num            other.tm            othernum
1 2017-03-30 16:49:03 1490917803 2017-03-30 16:50:25 2017-03-30 16:50:03
> test$othernum[1] <- test$tm +60
> test
                   tm        num            other.tm            othernum
1 2017-03-30 16:49:03 1490917803 2017-03-30 16:50:25 2017-03-30 16:50:03