我是SAS的新手,我有以下问题。我使用的数据库在两列中有两个日期,我应该计算几个月之间的差异。
这些日期的格式为YYMM,例如:200603是2006年3月,200612是2006年12月。 他们之间的差异应该是9个月。
我正在尝试使用日期差异创建一个新列(称为"差异")。我尝试了以下代码:
data TIMES.TEST;
set TIMES.INPUTS;
difference = intck('month',input(fin_period,yymmn6.),input(period,yymmn6.));
run;
它会创建一个名为差异的新列(正确),但它全部用点填充。没有计算。我做错了什么吗?当我有这样的日期格式时,还有另一种计算两个日期之间差异的方法吗?
提前致谢。
我使用SAS Studio。
答案 0 :(得分:0)
如果将period
和fin_period
存储为数字变量,则需要先将其转换为文本,然后才能应用yymmn6.
信息将其转换为日期。
以下几个例子可能有助于使这一点更加清晰:
data inputs;
input period fin_period;
cards;
200603 200612
;
run;
/*Difference = .*/
data test;
set inputs;
difference = intck('month',input(fin_period,yymmn6.),input(period,yymmn6.));
run;
data inputs2;
input period $ fin_period $;
cards;
200603 200612
;
run;
/*Difference = -9*/
data test2;
set inputs2;
difference = intck('month',input(fin_period,yymmn6.),input(period,yymmn6.));
run;
/*Difference = -9*/
data test3;
set inputs;
difference = intck('month',input(put(fin_period,6.),yymmn6.),input(put(period,6.),yymmn6.));
run;