全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2622 6
2009-09-22
希望能从一个数据集中按照日期(序号)每三天变量(三行)生成一个子数据集,求助各位大牛!

rq                     xh
2005-01-04       1         
2005-01-05       2         
2005-01-06       3         
2005-01-07       4         
2005-01-10       5         
2005-01-11       6         
2005-01-12       7         
2005-01-13       8         
2005-01-14       9         
2005-01-17       10
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2009-9-22 15:07:42
有一个笨办法

data aa1;
informat rq yymmdd10.;
format rq yymmdd10.;
input rq xh;
cards;
2005-01-04       1         
2005-01-05       2         
2005-01-06       3         
2005-01-07       4         
2005-01-10       5         
2005-01-11       6         
2005-01-12       7         
2005-01-13       8         
2005-01-14       9         
2005-01-17       10
;
run;

data _null_;
set aa1 end=a;
if a=1 then call symput('total',ceil(_n_/3));
run;

%macro test;
%do i=0 %to &total;
data out&i;
set aa1 ;
if  (_n_>3*&i and _n_<=3*(&i+1)) then output out&i;
%end;
%mend;

%test;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-9-23 00:54:10
非常感谢,解决了我的大问题!

2# flutter88
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-9-23 07:31:37
1# 人生海海

复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-9-23 09:33:13
4# jingju11

强,这样效率改进很多了,呵呵
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-9-23 15:28:03
data _null_;

set aa1 end=_endof;

if _endof then call symput('total',put(ceil(_n_/3), 10.));

run;

%macro subsets;

data %do i=1 %to &total; out&i  %end;;

  set aa1;

  if _n_ <=3 then  output out1;

  %if &total>1 %then%do;

   %do i=2 %to &total;

    else if _n_ <=3*&i then output out&i;

   %end;

  %end;

run;

quit;

%mend subsets;



%subsets

;

好样的
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群