作者MOONY135 (谈无慾)
看板Statistics
标题Re: [程式] 条件自动新增,SAS或EXCEL都可,拜托帮忙
时间Thu Mar 5 22:55:41 2015
这是最核心的code 接下来只是把一行一行的值丢进来切开而已
(这个还要再写一个巨集 原谅我懒得改了)
assemble_set就是你要的结果
test就是你的原始档
然後同年度跟不同年度有不同的处理法 只有不同年度需要切开
EX
/*================================*/
data 同年度 (DROP='时间迄'n) ;
set TEST ;
if (时间迄-时间起)=0 then output;
run;
/*================================*/
/*===================================*/
data 不同年度 ;
set TEST ;
if (时间迄-时间起) > 0 then output;
run;
/*==================================*/
data STEP_1;
set 不同年度;
时间起=year(StartYear);
时间迄=year(EndYear);
run;
data assemble_set;
set step_1 (firstobs=1 obs=1);
run;
data obs_for_Calcu1 ;
set assemble_set;
run;
proc sql noprint ;
select (时间迄-时间起)
into :time_count
from obs_for_Calcu1
;
quit;
%macro Calcu;
%do num=1 %to &time_count;
proc sql;
create table dataadd&num as
select Company,
StartYear,
EndYear,
President,
时间起+&num as '时间起'n ,
'时间迄'n
from obs_for_Calcu1
;
quit;
proc append base=assemble_set data=dataadd#
run;
PROC SQL NOPRINT;
DROP TABLE dataadd&num ;
QUIT;
%end;
%mend Calcu;
%Calcu
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.254.118.104
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Statistics/M.1425567344.A.080.html
※ 编辑: MOONY135 (111.254.118.104), 03/05/2015 23:01:03
1F:推 faceoflove56: 未读先推,一定仔细研究 感谢 03/05 23:17
2F:推 bugle: 有需要这麽长吗 = = 03/06 03:38
3F:→ MOONY135: 我用巨集切割的想法 你有更简单的写法可以参考吗 03/06 08:50
4F:→ MOONY135: 我是用一笔一笔APPEND上去的想法喔 03/06 08:53