楼主: yukai08008
913 0

[程序分享] 周期数据统计宏sas代码_Andy的原创帖3 [推广有奖]

  • 2关注
  • 17粉丝

讲师

2%

还不是VIP/贵宾

-

威望
0
论坛币
2176 个
通用积分
3.0600
学术水平
10 点
热心指数
7 点
信用等级
7 点
经验
5915 点
帖子
120
精华
0
在线时间
556 小时
注册时间
2012-11-28
最后登录
2022-4-11

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

如果有按周期,比如按月,按周对数据进行计数或者累加,可以使用以下宏。SAS默认的周一年就会循环一次,有些长期的数据不太合适。
*ps:在tvar这个宏里自定义周的开始时间。
inset=指定输入数据集
key=日期变量
slot=tweek (周)  或 slot=tmonyy(月)
start=1 默认从第一周开始显示
var=cnt 默认为计数,要求和的话只要把这个选项改成求和变量就可以了,结果如下:

_name_        tweek1tweek2tweek3tweek4tweek5tweek6tweek7tweek8tweek9tweek10tweek11tweek12tweek13
test_c

1

2

3

4

5

6

7

8

9

10

11

12

13

test_c_acc

1

3

6

10

15

21

28

36

45

55

66

78

91



%global setn;
%let setn=1;

**********主宏*************
/*数据集中不要有cnt为变量名的变量*/
/*获取最终变量名前缀*/
%macro wr(inset,key,slot=tweek,start=1,var=cnt);
data _null_;
a=substr("&inset",find("&inset",'.')+1);
call symput('nm',a);
run;

/*变量后缀*/
data a1;
set &inset;
cnt=1;
svar=&var;
if &var eq cnt then call symput('pfix','c');
else call symput('pfix','s');
run;
%tvar(a1,&key)
proc summary data=a1;
class &slot;
var svar;
output out=a2 sum(svar)=%sysfunc(cats(&nm,_&pfix));
run;

data b1;
set a2;
if _type_=1;
%sysfunc(cats(&nm,_&pfix,_acc))+%sysfunc(cats(&nm,_&pfix));
if &slot ge &start;
keep &slot %sysfunc(cats(&nm,_&pfix,_acc)) %sysfunc(cats(&nm,_&pfix));
run;

data _null_;
call symput('sn',cats('c',"&setn"));
run;
%sort(b1,&slot)
proc transpose data=b1 out=&sn prefix=&slot;
id &slot;
run;
data _null_;
call symput('setn',&setn+1);
run;
%mend;


***********两个被调用的宏***************
%macro tvar(ins,dt);
data &ins;
set &ins;
tweek=floor((&dt-'4jan2016'd)/7)+1;
a=put(&dt,monyy7.);
tmonyy=input(a,monyy7.);
drop a;
format tmonyy monyy7.;
run;
%mend;


%macro sort(in,key);
proc sort data=∈
by &key;
run;
%mend;



二维码

扫码加我 拉你入群

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

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

关键词:sas代码 数据统计 Andy Transpose sysfunc sas 周期

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 13:11