楼主: fanzai1hao
2247 4

sas求前10行观测加总 [推广有奖]

  • 0关注
  • 38粉丝

已卖:3544份资源

讲师

61%

还不是VIP/贵宾

-

威望
0
论坛币
7228 个
通用积分
19.7225
学术水平
17 点
热心指数
38 点
信用等级
15 点
经验
33245 点
帖子
189
精华
0
在线时间
677 小时
注册时间
2010-5-14
最后登录
2026-1-21

楼主
fanzai1hao 学生认证  发表于 2016-8-10 00:50:54 |AI写论文
50论坛币
如图,现在有date(日期)和sales(销售)数据,如何用sas来处理,构建新的变量求当前日期前10天总销售量。比如,构建新的变量total,11号的total等于1号到10号的sales加总。唯一能想的方法是lag10次,但太麻烦,请问大神们有什么简便方法。谢谢

QQ截图20160810004503.png (8.62 KB)

QQ截图20160810004503.png

关键词:Total sales sale date les 销售量 如何

沙发
mingfeng07 学生认证  发表于 2016-8-10 00:50:55
  1. data tmp;
  2. var='01Jan2016'd;
  3. do i=1 to 30;
  4.         date=intnx('day',var,i-1);
  5.         sales=i;
  6.         output;
  7. end;
  8. drop var i;
  9. format date yymmdd10.;
  10. run;

  11. proc sql;
  12.         create table tmp1 as
  13.         select a.date,b.date as lag_date,b.sales from tmp a left join  tmp b
  14.         on 0<intck('day',b.date,a.date)<=10
  15.         order by a.date,b.date;

  16.         create table out as
  17.         select date,sum(sales) as total from tmp1
  18.         group by date
  19.         having count(*)=10;
  20. quit;
复制代码

藤椅
fanzai1hao 学生认证  发表于 2016-8-10 12:39:14
mingfeng07 发表于 2016-8-10 10:25
厉害!

板凳
wwang111 发表于 2016-8-10 13:58:38
也可以试一下这个方法:

data test;
do date='01jan2016'd to '31jan2016'd;
  sale+1;
  output;
end;
format date yymmdd10.;
run;

data wanted;
set test;
retain _firstdate;
if _n_=1 then _firstdate=date;
call missing(total);
do i=1 to nobs;
  set test(rename=(date=_date sale=_sale)) point=i nobs=nobs;
  if date-_firstdate>=10 and 0<date-_date<=10 then total+_sale;
end;
drop _:;
run;

报纸
fanzai1hao 学生认证  发表于 2016-8-10 14:18:01
wwang111 发表于 2016-8-10 13:58
也可以试一下这个方法:

data test;
牛逼,谢谢!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-22 03:33