如何格式化SAS的MONYY格式的输入

时间:2016-08-08 18:25:41

标签: date formatting sas

我目前有一个日期格式为" FY15 FEB"的数据集。在尝试格式化此变量以用于SAS的时间和日期时,我已完成以下操作:

data temp;
    set pre_temp;
    yr = substr(fiscal,3,2);
    month = substr(fiscal,6,length(fiscal));
    mmmyy = month||yr;
    input mmmyy MONYY5.;
    datalines;
run;

所以,我有代表年份和相应月份的字符串。但是,运行此代码会给出错误"未找到或无法加载信息$ MONYY。"对这个错误做一些背景告诉我,它与传递信息的错误类型的值有关;我应该改变什么才能获得正确的输出?

*编辑:我在SAS支持页面上看到" MONYYw的格式。期望SAS日期值作为输入;"鉴于此,如何在此之前从字符串转换为不同的日期格式?

1 个答案:

答案 0 :(得分:1)

当你看到$时,它意味着字符值。在这种情况下,您将为SAS提供一个字符值并为其提供数字格式。 SAS为您插入$,但是没有这样的格式存在。

我将忽略datalines语句,因为我不确定它为什么存在(虽然我注意到没有set语句)。您可以更轻松地将程序更改为:

data temp;
    yr = substr(fiscal,3,2);
    month = substr(fiscal,6,length(fiscal));
    pre_mmmyy = strip(month)||strip(yr);
    mmmyy=input(pre_mmmyy,MONYY5.);
run;

您还可以从子字符串函数中删除“length(financial))”。 substring函数的第三个参数是可选的,默认情况下将转到字符串的末尾。