【问题标题】:SAS date conversion from text.来自文本的 SAS 日期转换。
【发布时间】:2014-07-15 15:57:09
【问题描述】:

您好,我在 SAS 中遇到了日期转换问题, 我导入了一个具有以下日期的 excel 文件。,

2012-01-09
2011-01-31
2010-06-28
2005-06-10
2012-09-19
2012-09-19
2007-06-12
2012-09-20
2004-11-01
2007-03-27
2008-06-23
2006-04-20
2012-09-20
2010-07-14

在我导入之后,日期变成了这样

40917
40574
40357
38513
41171
41171
39245
41172
38292
39168
39622
38827
41172
40373

我已经使用输入函数来转换日期,但它给出了一个奇怪的结果。, 我使用的代码。,

want_date=input(have_date, anydtdte12.);
informat want_date date9.; format have_date date9.;run;

我对世界日期非常陌生,知道如何转换这些日期吗?

【问题讨论】:

  • 你能更清楚地解释这里的问题吗?导入 SAS 后,您列出的数据是 5 位数字吗?该字段的格式/信息是什么?
  • 数字是 Excel 中日期的数字表示形式。
  • @Joe - 我的意思是,第二个列表中的数字是值在 SAS 中的显示方式吗?
  • 是的,如果 SAS 没有将该字段检测为日期/日期时间,它将显示基础数字(所以,那个)。

标签: date sas


【解决方案1】:

您可以鼓励 SAS 在导入期间将数据转换为日期,尽管这不一定是万能的。

proc import file=whatever out=whatever dbms=excel replace;
  dbdsopts=(dbSasType=( datevar=date ) );
run;

其中datevar 是您的日期列名称。这告诉 SAS 期望这是一个日期并尝试对其进行转换。

更多信息请参见So Your Data Are in Excel,或the documentation

【讨论】:

    【解决方案2】:

    发件人:http://www2.sas.com/proceedings/sugi29/068-29.pdf

    时间在 SAS 内部计算为自午夜以来的秒数,并且 日期/时间组合计算为自以来的秒数 1960 年 1 月 1 日午夜。

    Excel 还使用简单的数值来表示日期和时间 内部。对于日期值,与 SAS 日期的差异是 只有锚点。 Excel 使用 1900 年 1 月 1 日作为第一天。

    所以添加一个常量。

    示例:

    SAS_date = Excel_date - 21916;
    SAS_time = Excel_time * 86400;
    SAS_date_time = (Excel_date_time - 21916) * 86400;
    

    【讨论】:

    • 嗨贾斯汀,谢谢你的回复。但我不明白我应该怎么做才能得到日期
    • 您列出的导入数字是 Excel 日期时间代码的数字。您导入了一个整数值,而不是一个被解析为日期的字符串。
    • 请记住,1900 年 2 月 29 日不存在,但包含在 Excel/Microsoft 数据中。
    • 好的。我明白了。但是你能告诉我如何将它转换为 sas 日期的最佳方法吗?
    • 你能给出完整的导入代码,或者至少比已经发布的更完整的版本吗?
    【解决方案3】:

    正如贾斯汀所写,您需要更正不同的零日期(SAS 与 Excel)。

    那么你只需要应用一个格式(如果你想得到一个日期变量来做计算):

    want_date = have_date-21916;
    format want_date date9.;
    

    或者转成字符串:

    want_date = put(have_date-21916, date9.);
    

    无论哪种情况,您都可以选择您喜欢的日期格式。

    【讨论】:

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