【发布时间】:2016-11-30 08:41:47
【问题描述】:
SAS 文档为数据和日期时间值声明了以下内容:
SAS 时间值:表示从当天午夜开始的秒数。 SAS 时间值介于 0 到 86400 之间。
SAS 日期时间值:表示从 1960 年 1 月 1 日到指定日期内的小时/分钟/秒之间的秒数。
我愿意用 R 转换以下日期和小时值,我对小时(日期时间)转换有很大疑问,R_hour1 和 @987654322 中的“HH:MM:SS”值之一@是正确的?
我必须在我的表中分隔列,SAS 日期 = 20562 和 SAS 小时 = 143659
R: R_date <- as.Date(as.integer(20562), origin="1960-01-01"); R_date
[1] "2016-04-18"
R: R_hour1 <- as.POSIXct(143659, origin = R_date); R_hour1
[1] "2016-04-19 17:54:19 CEST"
R: R_hour2 <- as.POSIXct(143659, origin = "1960-01-01"); R_hour2
[1] "1960-01-02 16:54:19 CET"
【问题讨论】:
-
SAS时间的单位是秒,一天有86400秒(24*60*60),从当天午夜开始。您的小时值大于 86400,显然您的起点不是当天,所以您必须知道开始日是什么时候。如果开始日期是2016-04-18,R_hour1是正确的,如果开始日期是1960-01-01,那么R_hour2是正确的。