全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2553 4
2016-12-28
悬赏 10 个论坛币 未解决
日期             时间            v   selerl ID  buyer id  
2016.12.1    7:10:00      10    A          B
2016.12.1    7:10:01      10    B          C
2016.12.1    7:10:02      10    C         B
2016.12.1    7:10:02      10    M         A
想得到的结果是 A 处于seller id时,新的变量s 初始 0,对应s+V,处于seller id时,对应s-v,比如,A在 7:10:00  的s值为10,在 7:10:02 时刻的值为0,对里面出现的所有id 进行这样的处理。
二维码

扫码加我 拉你入群

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

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

全部回复
2016-12-29 09:41:04
描述的不清楚啊 ,下面程序计算每个seller id 在同一天 总共sale了多少

data a;
input date $10. time $8.   v  id_s $2. id_b $2.;
DATALINES;
2016.12.1 7:10:00 10 A B
2016.12.1 7:10:01 10 B C
2016.12.1 7:10:02 10 C B
2016.12.1 7:10:02 10 M A
2016.12.1 7:10:03 10 A C
2016.12.1 7:10:09 10 C B
;
run;

proc sort data=a out=b;by id_s date time v id_b;run;

data c;
set b;
by id_s date time v id_b;
retain s;
if first.date then s=0-v;
else s=s-v;
if last.date;
keep id_s date s;
run;
二维码

扫码加我 拉你入群

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

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

2016-12-29 15:50:43
lovexialulu 发表于 2016-12-29 09:41
描述的不清楚啊 ,下面程序计算每个seller id 在同一天 总共sale了多少

data a;
上面写错了,都写成了seller id 想得到的每个id在每个时刻的持有量,buyerid 就加前面的v,v就是一个交易量,买或者卖,sell就减,也就是根据每笔的交易记录,看每个id每个时点的持有量。
二维码

扫码加我 拉你入群

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

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

2016-12-29 17:30:26
%macro jj(id);
proc sort data=a out=b;by  date time;
where id_s in ("&id.") or id_b in ("&id.");run;

data c;
set b;
by date time ;
if id_s in ("&id.") then v=0-v;

retain s;
if first.date then s=v;
else s=s+v;
run;
%mend jj;
%jj(A);

output like :
附件列表
sale.PNG

原图尺寸 5.73 KB

sale.PNG

二维码

扫码加我 拉你入群

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

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

2016-12-30 19:11:32
lovexialulu 发表于 2016-12-29 17:30
%macro jj(id);
proc sort data=a out=b;by  date time;
where id_s in ("&id.") or id_b in ("&id.");ru ...
感谢你的解答,但是还是有一个问题,这个程序通过输入id得到id的持有结果,在数据集中id很多,有20多个的情况下,一个一个试很麻烦,如果给定一个数据集,想直接看到里面id的结果要怎么实现呢?
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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