按日期范围拆分数据集

问题描述 投票:0回答:1

假设有以下数据集:

       ID                 date            
        A                 201806
        B                 201809
        C                 201901
        D                 201905
        E                 201906
        F                 202002
        G                 202003
        H                 202004

有没有办法将数据集从6月到次年6月逐年拆分? 让我们说:

新的数据集 1 将是:

       ID                 date            
        A                 201806
        B                 201809
        C                 201901
        D                 201905

2018年6月(01)日至2019年5月(31)日

新的数据集 2 将是:

       ID                 date   
        E                 201906
        F                 202002
        G                 202003
        H                 202004

2019年6月(01)日至2020年4月(30)日

提前谢谢您

sas
1个回答
1
投票

根据发布的结果,我认为在对您发布的数据的最后观察中,202006 应该是 202004。

像这样分割数据很少是一个好主意,但你可以这样做

data have;
input ID $ date : yymmn6.;
format date yymmn6.;
datalines;
A 201806
B 201809
C 201901
D 201905
E 201906
F 202002
G 202003
H 202004
;

data temp;
   set have;
   from = intnx('year.6', date, 0, 'b');
   to   = intnx('year.6', date, 0, 'e');
run;

proc sort data = temp;
   by to;
run;

data _null_;

   if _N_ = 1 then do;                
      dcl hash h(dataset:"temp(obs=0)", multidata:'y', ordered : 'A'); 
      h.definekey('ID', 'date');                                                                        
      h.definedone();                                          
   end;

   do until(last.to);                                     
      set temp;                                             
      by to;
      h.add();                                                  
   end;

   h.output(dataset : cats('data_', _N_));                                   
   h.clear();     
 
run;
© www.soinside.com 2019 - 2024. All rights reserved.