在 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;
我有一个这种格式的样本数据作为字符。
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;