【问题标题】:SAS importing dates from excelSAS从excel导入日期
【发布时间】:2020-05-09 05:55:18
【问题描述】:

我有一个使用 proc import 导入的 xlsx 数据集。 excel中有一个列保存日期值,例如: 2018-11-30 00:00:00 当我将其导入 SAS 时,它会自动将其转换为数字 43434。 当我尝试将其转换为日期时:put(col,date9.),我得到: 2078-12-01

发生了什么?我怎样才能找回正确的日期。我尝试了混合=yes 选项,但它不适用于 dbms=xlsx。当我执行 dbms=excel 时,它没有按预期工作

【问题讨论】:

  • 您能否修复 Excel 中的列,以便在将其导入 SAS 之前所有值都是有效日期?当列具有混合类型时,SAS 将强制将其作为字符导入。当它这样做时,它会获取 Excel 用来存储日期的数字的字符表示形式,而不是人类可读的格式化值。

标签: sas


【解决方案1】:

有时 SAS 会将日期导入为原始 Excel 日期。我不确切知道为什么或何时这样做,但我认为这与日期的格式有关。如果发生这种情况,请将日期减去 21916 以将 Excel 日期转换为 SAS 日期。

data want;
    set imported_from_excel;

    date = excel_date - 21916;
run;

【讨论】:

  • 在 Excel 中,包含日期值的单元格通常格式正确,以便呈现人类可读的日期表示。当单元格格式更改为 Number 或重置(为 General)时,Excel 将显示对应于 Excel 日期纪元的数字。 Erik W. Tilanus 的会议论文链接Dating SAS® and MS Excel
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-03
  • 2014-01-05
相关资源
最近更新 更多