【问题标题】:SAS dd-mm-yyyy to mmm-yy format like excelSAS dd-mm-yyyy 到 mmm-yy 格式,如 excel
【发布时间】:2020-10-30 08:11:55
【问题描述】:

我使用以下 proc 格式将 SAS 中的日期 01-01-2020 转换为 Jan-20:

proc format;
    picture date9x other = '%b-%0y'( datatype= date );
        format MMYYYT date9x.;
run;

这可以正常工作,但是当我导出该日期的 SAS 值时,会显示在字段中。有没有更好的方式转换为 MMM-YY?

【问题讨论】:

  • 解释一下您所说的导出是什么意思。请注意,格式不会更改存储的值。它只是改变了它的显示方式。 Excel 中也会发生同样的事情。
  • 解决方案会根据您导出数据的方式而变化?
  • 对,我的数据集中的值没有改变。只是格式变了。但是,当我将它们导出到 excel 时,我注意到这些字段现在具有 SAS 日期值而不是 MM-YYYY。最终,当我将 sas 数据集导出到 excel 文件时,我想将(01-01-2020 或 20200101)转换为 Jan-20。
  • 导出方式有多种,详细说明你做了什么。如果您使用代码显示代码。如果您使用菜单项,请说明您使用的用户界面以及您使用的菜单项。

标签: sas


【解决方案1】:

Proc EXPORT 将使用默认 Excel 数据格式 m/d/y,用于任何以 SAS 日期格式格式化的数据集列。导出将使用“最近”对应的 Excel 日期格式复制 SAS 格式。

ODS Excel 会将 Excel 格式应用于日期格式的变量,以对应 SAS 中的相同外观。

至于mmm-yy,或者Jan-20

SAS 格式monyy 让您接近,但没有插入分隔符的选项 (-)。但是,ODS Excel 目标将遵循样式选项tagattr= 中指定的 Excel 格式指令。

例子:

data have;
  date  = '01-JAN-2020'd;
  date2 = '01-JAN-2020'd;
  format date date9.;
run;

ods excel file='want-ods.xlsx';
proc print data=have;
  format date monyy5.;
  var date;
  var date2 / style=[tagattr='type:DateTime format:MMM-YY'];
run;
ods excel close;

options noxwait noxsync xmin;
%sysexec start "preview" want-ods.xlsx;

数据集的SAS视图

通过 ODS Excel 打印的数据集的 Excel 视图,带有 Proc 时间格式和样式。

【讨论】:

    猜你喜欢
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多