全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3658 16
2011-01-27
我有4个变量,数据结构如下:
customer  product   date                     category
1               001          12Feb2010          A
1               002          13Feb2010          B
1               003          19Feb2010          B
1               004          01Mar2010          A
2               005          12Mar2010          B
2               006          15Apr2010          A
2               007          18Apr2010          B
....
说明:
customer代表每一个客户id。
product代表每一个客户购买的产品,此id在数据集中是unique的,互不重复。
date代表此产品的买入时间。
category是此产品的类别,只有A和B两个值。
现要求:生成一个变量datediff,对每一个客户下的每一个产品,计算其距离上次购入A类产品的时间差(以天算)。如果是第一条记录或者之前没有购入A类产品,则为空值。

举例来说,在刚刚这个数据集中,最后应该如下:
customer  product   date                     category   datediff
1               001          12Feb2010          A              .                   (第一条记录)
1               002          13Feb2010          B              1                  (此条date=13Feb2010,上次买入A类产品是第一条记录date=12Feb2010,故为1)
1               003          19Feb2010          B              7                  (此条date=19Feb2010,上次买入A类产品是第一条记录date=12Feb2010,故为7)
1               004          21Feb2010          A              9                  (此条date=21Feb2010,上次买入A类产品是第一条记录date=12Feb2010,故为9)
2               005          12Apr2010          B              .                    (第一条记录且之前无购买A纪录)
2               006          15Apr2010          A               .                   (之前无购买A纪录)
2               007          18Apr2010          B              3                   (此条date=18Apr2010,上次买入A类产品是第一条记录date=15Apr2010,故为3)
....
依次类推。
还请高手指教。。。。
二维码

扫码加我 拉你入群

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

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

全部回复
2011-1-27 09:20:46
用这个试试
二维码

扫码加我 拉你入群

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

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

2011-1-27 09:25:29
试试这个程序
data a;
   input a b;
cards;
1 2
1 4
2 1
2 6
;
run;

data b;
   set a;
   by a;
   c=lag(b);
   if first.a then d=.;
   else d=b-c;
run;
二维码

扫码加我 拉你入群

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

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

2011-1-28 11:42:49
烦请写一下code,谢谢了。
二维码

扫码加我 拉你入群

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

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

2011-1-28 18:43:28
复制代码
二维码

扫码加我 拉你入群

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

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

2011-1-28 19:38:35
hssnow 发表于 2011-1-28 18:43
复制代码
这段code结果不对:
customer  product   date                     category   datediff
1               001          18305                  A               .
1               002          18306                  B              1
1               003          18312                  B              7
1               004          18322                  A              17
2               005          18333                  B              .
2               006          18367                  A               34
2               007          18370                  B               37
对照一下我发的期望结果,可知这段code不对。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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