在 sas 中转换 Month_Dt

Convert Month_Dt In sas

我有一个这种格式的样本数据作为字符。

Month
2008-09 
2007-10 
2008-09

如何获取以上日期 '01sep2008' (SAS DESIGN STUDIO)

使用输入函数

输入函数是使用信息格式解释字符变量的函数。 _(这与输入语句不完全相同,输入语句根据信息格式解释infile中的文本。)

可能有一个信息格式可以正确地解释像 2008-09 这样的字符串,但我不知道,所以我只是向它添加一个 _01 并应用信息格式 yymmdd10.

例子

根据您的情况(数据通知文件或数据集/您更喜欢数据步骤或 sql / ...)完整的解决方案如下所示:

data Before;
    input the_date .;
    datalines;
2008-09 
2007-10 
2008-09
;
data After;
    set Before (rename=(the_date=old_date));
    format the_date date9.;
    the_date = input(old_date||'-01', yymmdd10.);
    * while testing the code, uncomment the following line :
    drop old_date;

proc print;
run;

有几种方法可以做到这一点。 Dirk 有一个很好的方法,可以将日期连接到字符串上并使用 INPUT() 函数。

您还可以将 yymmn6. 信息与 INPUT() 一起使用。这需要您从字符串中删除“-”。

data test;
x = '2008-05';
format y date9.;
y = input(compress(x,"-"),yymmn6.);
put y;
run;

您可以使用 MDY() 指定月、日和年。在这里,您使用 SCAN() 函数从使用“-”作为分隔符的字符串中挑选月份和年份。

data test;
x = '2008-05';
format y date9.;
y = mdy(scan(x,2,'-'),1,scan(x,1,'-'));
put y;
run;