【问题标题】:SAS to R datetime conversionSAS 到 R 日期时间转换
【发布时间】: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是正确的。

标签: r datetime sas


【解决方案1】:

与 R 类似,SAS 日期和日期时间值可以具有您希望它们的任何来源。默认格式有一个默认值(两者都是 1/1/1960),但是您可以使用 datetime 字段来表示您希望的任何来源,并且它通常仍然可以与任何 datetime 函数完美配合(尽管它不会显示除非您编写自定义格式,否则正确)。很可能有不同的来源,如上面 R_hour1 所示。

因此,您必须询问生成数据的人该字段的含义是什么以及它的来源应该是什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-16
    • 2016-07-29
    • 2015-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    相关资源
    最近更新 更多