楼主: pinseng
1109 4

[原创博文] 请教一个SAS data的问题,谢谢 [推广有奖]

  • 2关注
  • 3粉丝

硕士生

20%

还不是VIP/贵宾

-

威望
0
论坛币
395 个
通用积分
26.2433
学术水平
5 点
热心指数
8 点
信用等级
6 点
经验
2075 点
帖子
135
精华
0
在线时间
116 小时
注册时间
2006-11-11
最后登录
2016-6-23

楼主
pinseng 发表于 2011-11-10 12:20:52 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
data1

id       time         revenue   
1    20100101       12
1    20100102       8
1    20100103       12
1    20100104       12
1    20100105       12
2    20100101       2
2    20100102       2
2    20100103       2
2    20100104       2
3    20100105       30
3    20100106       31
4    20100101       12
4    20100102       12
4    20100105       2
5    20100101       12
6    20100101       32
7    20100101       2

现在要做的,对每个id,如果cummulative revenue>=30,就输出来,同时记录下在达到30的时候的时间;如果总共都不到30,那也输出来
对id 1,12+8+12=32大于30,所以我们记录下  1  20100103 32;  继续,12+12=24,尽管小于30,但是因为1已经没有了,所以也打出来, 1    20100105       24
同样的道理,对后面的也这么做。

所以最后想要的结果应该是这样

id       time         cum_revenue   
1    20100103       32
1    20100105       24
2    20100104       8
3    20100105       30
3    20100106       31
4    20100105       26
5    20100101       12
6    20100101       32
7    20100101       2
二维码

扫码加我 拉你入群

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

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

关键词:Data Revenue Venue Even time revenue 记录

沙发
pinseng 发表于 2011-11-10 12:21:59
就是条件输出,对revenue求cummulative sum,达到30就把它输出,同时把达到30的时间也属出来。

藤椅
soporaeternus 发表于 2011-11-10 12:36:30
  1. data b(drop=revenue );
  2.         set a;
  3.         by id;
  4.         cum_revenue+revenue;
  5.         if last.id or cum_revenue>=30 then do;
  6.                 output;
  7.                 cum_revenue=0;
  8.         end;
  9. run;
复制代码
Let them be hard, but never unjust

板凳
pinseng 发表于 2011-11-10 12:45:06
多谢多谢!

报纸
spssone 发表于 2011-11-17 13:00:02
藤椅 楼是高手啊

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-26 03:27