【问题标题】:Converting YYMM number into a date to calculate the interval in months in SAS将 YYMM 数字转换为日期以计算 SAS 中的月间隔
【发布时间】:2018-01-10 11:11:06
【问题描述】:

我是 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。

【问题讨论】:

    标签: date sas formatting


    【解决方案1】:

    如果periodfin_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;
    

    【讨论】:

    • 哇!感谢您的快速回复。您提出的代码效果很好。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-01-11
    • 2016-07-24
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多