Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sas 日期范围包括哪些月份?_Sas_Date Range - Fatal编程技术网

Sas 日期范围包括哪些月份?

Sas 日期范围包括哪些月份?,sas,date-range,Sas,Date Range,我有一个数据集,其中包含一组用户注册的起始日期和截止日期。我想通过编程找到每个用户的日期之间的月份,而不必在任何月份进行硬编码,等等。我只想要每个月注册的数字的摘要,所以如果这样做可以更快,那就更好了 我有类似的东西 User-+-From-------+-To----------------- A + 11JAN2011 + 15MAR2011 A + 16JUN2011 + 17AUG2011 B + 10FEB2011 + 12FEB2011 C + 01AU

我有一个数据集,其中包含一组用户注册的起始日期和截止日期。我想通过编程找到每个用户的日期之间的月份,而不必在任何月份进行硬编码,等等。我只想要每个月注册的数字的摘要,所以如果这样做可以更快,那就更好了

我有类似的东西

User-+-From-------+-To-----------------
A    + 11JAN2011  + 15MAR2011
A    + 16JUN2011  + 17AUG2011
B    + 10FEB2011  + 12FEB2011
C    + 01AUG2011  + 05AUG2011
Month---+-Registrations
JAN2011 + 1 (A)
FEB2011 + 2 (AB)
MAR2011 + 1 (A)
APR2011 + 0
MAY2011 + 0
JUN2011 + 1 (A)
JUL2011 + 1 (A)
AUG2011 + 2 (AC)
我想要像这样的东西

User-+-From-------+-To-----------------
A    + 11JAN2011  + 15MAR2011
A    + 16JUN2011  + 17AUG2011
B    + 10FEB2011  + 12FEB2011
C    + 01AUG2011  + 05AUG2011
Month---+-Registrations
JAN2011 + 1 (A)
FEB2011 + 2 (AB)
MAR2011 + 1 (A)
APR2011 + 0
MAY2011 + 0
JUN2011 + 1 (A)
JUL2011 + 1 (A)
AUG2011 + 2 (AC)
注意,我不需要括号中的位;那只是想澄清我的观点


感谢您的帮助。

一个简单的方法是构造一个中间数据集,然后进行PROC FREQ

data have;
informat from to DATE9.;
format from to DATE9.;
input user $ from to;
datalines;
A     11JAN2011   15MAR2011
A     16JUN2011   17AUG2011
B     10FEB2011   12FEB2011
C     01AUG2011   05AUG2011
;;;;
run;

data int;
set have;
_mths=intck('month',from,to,'d');  *number of months after the current one (0=current one). 'd'=discrete=count 1st of month as new month;
do _i = 0 to _mths; *start with current month, iterate over months;
  month = intnx('month',from,_i,'b');
  output;
end;
format month MONYY7.;
run;

proc freq data=int;
tables month/out=want(keep=month count rename=count=registrations);
run;

您可以通过在do循环中执行此操作来消除_mth步骤。

太好了。谁知道会这么简单。非常感谢。