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



我目前有一个日期格式为"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日期值作为输入;鉴于此,我如何在此之前从字符串转换为不同的日期格式?

当您看到$时,它表示字符值。在本例中,您向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(fiscal))"。substring函数的第三个参数是可选的,默认情况下将转到字符串的末尾。

最新更新