SAS intnx 四分之一变化
SAS intnx quarter variation
抱歉,这可能是一个非常简单的问题,但我似乎找不到答案。
比如说,我们要创建一个 table,其中包含从上个月开始的 4 个季度:
%macro asd;
%let today = %sysfunc(today());
%let quarter_count_back = 4;
%let first_quarter = %sysfunc(intnx(month,&today.,-1));
proc sql;
create table quarters
(
Quarters num informat = date9. format = date9.
);
insert into quarters
%do i = 0 %to -&quarter_count_back.+1 %by -1;
values(%sysfunc(intnx(quarter,&first_quarter.,&i.)))
%end;
;
quit;
run;
%mend asd;
%asd;
run;
此代码运行良好并创建了一个 table,它从 2016 年 4 月开始并按季度倒退。但是,如果我将 'first_quarter' 行中的数字更改为 -2、-3 等...代码始终从 JAN2016 开始,这对我来说没有任何意义!例如:
%let first_quarter = %sysfunc(intnx(month,&today.,-2));
如果我将这一行放在代码中,table 应该从 2016 年 3 月开始并按季度返回,这似乎合乎逻辑,但它不是,它从 2016 年 1 月开始。
关于我在这里做错了什么有什么想法吗?
谢谢!
INTNX 函数的默认对齐方式是间隔的开始。如果您希望它返回 3 个月,那与季度不同。您可以通过查看控制对齐的 INTNX 函数的第四个参数来调整这些。选项是:
- 相同
- 开始
- 结束
如果您想要三个月,请尝试使用 MONTH.3 间隔而不是季度。
抱歉,这可能是一个非常简单的问题,但我似乎找不到答案。
比如说,我们要创建一个 table,其中包含从上个月开始的 4 个季度:
%macro asd;
%let today = %sysfunc(today());
%let quarter_count_back = 4;
%let first_quarter = %sysfunc(intnx(month,&today.,-1));
proc sql;
create table quarters
(
Quarters num informat = date9. format = date9.
);
insert into quarters
%do i = 0 %to -&quarter_count_back.+1 %by -1;
values(%sysfunc(intnx(quarter,&first_quarter.,&i.)))
%end;
;
quit;
run;
%mend asd;
%asd;
run;
此代码运行良好并创建了一个 table,它从 2016 年 4 月开始并按季度倒退。但是,如果我将 'first_quarter' 行中的数字更改为 -2、-3 等...代码始终从 JAN2016 开始,这对我来说没有任何意义!例如:
%let first_quarter = %sysfunc(intnx(month,&today.,-2));
如果我将这一行放在代码中,table 应该从 2016 年 3 月开始并按季度返回,这似乎合乎逻辑,但它不是,它从 2016 年 1 月开始。
关于我在这里做错了什么有什么想法吗?
谢谢!
INTNX 函数的默认对齐方式是间隔的开始。如果您希望它返回 3 个月,那与季度不同。您可以通过查看控制对齐的 INTNX 函数的第四个参数来调整这些。选项是:
- 相同
- 开始
- 结束
如果您想要三个月,请尝试使用 MONTH.3 间隔而不是季度。