【发布时间】:2017-12-26 13:48:24
【问题描述】:
我有一个这种格式的示例数据作为字符。
Month
2008-09
2007-10
2008-09
如何获得上述日期'01sep2008'(SAS DESIGN STUDIO)
【问题讨论】:
我有一个这种格式的示例数据作为字符。
Month
2008-09
2007-10
2008-09
如何获得上述日期'01sep2008'(SAS DESIGN STUDIO)
【问题讨论】:
有几种方法可以做到这一点。 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;
【讨论】:
输入函数是使用信息解释字符变量的函数。 _(这与输入语句不完全相同,它根据信息解释infile中的文本。)
可能有一个信息可以正确解释像2008-09 这样的字符串,但我不知道,所以我只是添加一个_01 并应用信息yymmdd10.
根据您的情况(数据是通知文件或数据集/您更喜欢数据步骤或 sql / ...)完整的解决方案如下所示:
data Before;
input the_date $7.;
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;
【讨论】: