楼主: nancy911
4085 9

SAS code 求救 [推广有奖]

  • 0关注
  • 0粉丝

大专生

73%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
901 点
帖子
50
精华
0
在线时间
58 小时
注册时间
2006-5-19
最后登录
2016-5-3

楼主
nancy911 发表于 2010-3-26 10:34:33 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
customerid purchasetime
1                  2009-2-3
1                  2009-2-5
2                  2010-1-2
2                  2010-3-4


以上为data format, 想求平均第一次购买和第二次购买的时间间隔,平均第二次购买和第三次购买时间间隔,。。。。。

谢谢
二维码

扫码加我 拉你入群

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

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

关键词:code COD ODE Customer purchase SAS 求救 code

回帖推荐

crackman 发表于2楼  查看完整内容

data crackman; input customerid purchasetime $@; year=input(substr(purchasetime,1,4),F4.); month=input(substr(purchasetime,6,7),F2.); day=input(substr(purchasetime,8,9),F2.) ; date=mdy(month,day,year); drop year month day; cards; 1 2009-2-3 1 2009-2-5 2 2010-1-2 2 2010-3-4 3 2010-9-6 3 ...

本帖被以下文库推荐

沙发
crackman 发表于 2010-3-26 11:07:34
data crackman;
input customerid purchasetime $@;
year=input(substr(purchasetime,1,4),F4.);
month=input(substr(purchasetime,6,7),F2.);
day=input(substr(purchasetime,8,9),F2.) ;
date=mdy(month,day,year);
drop year month day;
cards;
1                  2009-2-3
1                  2009-2-5
2                  2010-1-2
2                  2010-3-4
3                  2010-9-6
3                  2010-9-9
;
run;

proc sql;
create table crackman1 as
select mean(date) as datemean  from crackman group by customerid;
quit;
data a;
set crackman1;
b=lag(datemean);
result=datemean-b;
drop b;
run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

藤椅
crackman 发表于 2010-3-26 11:08:52
其实有个问题
就是你的日期格式
如果是2010-09-19
或者是2010-12-09
这个问题就需要高手来解决了
只是一个抛砖引玉的作用

板凳
hpmaomao 发表于 2010-3-26 11:31:37
data test1;
input n dt $;
date=input(dt,yymmdd10.);
cards;
1                  2009-2-3
1                  2009-2-5
2                  2010-1-2
2                  2010-3-4
run;

proc means data=test1 mean;
by n;
var date;
output out=test2 mean=meandate;
run;
data diff(keep=n difdate);
set test2;
difdate=meandate-lag(meandate);
if n =1 then delete;
run;

报纸
nancy911 发表于 2010-3-26 11:49:04
谢谢你,

是标准日期格式,

但是需求是求总体的平均第一次和第二次购买时间间隔,可能一个人购买5次,一个人只购买1次,
求整体平均的

可能是我刚才没说明白

十分十分感谢你

地板
soporaeternus 发表于 2010-3-26 11:49:58
  1. data t1;
  2.         input customerid purchasetime:YYMMDD10.;
  3.         format  purchasetime YYMMDD10.;
  4.         datalines;
  5. 1  2009-02-3
  6. 1  2009-2-05
  7. 1  2009-3-14
  8. 1  2010-4-15
  9. 2  2010-01-2
  10. 2  2010-3-04
  11. 2  2010/4/13
  12. 2  2010-11-12
  13. 3  2010-09-6
  14. 3  2010-9-09
  15. 3  2010-10-11
  16. ;
  17. run;

  18. proc sort data=t1 ;by customerid purchasetime;run;quit;

  19. data t2;
  20.         retain tt_time i 0;
  21.         set t1;
  22.         i+1;
  23.         by customerid purchasetime;
  24.         D=sum(purchasetime,-tt_time);
  25.         tt_time=purchasetime;
  26.         if first.customerid then do;
  27.                 D=.;
  28.                 i=1;
  29.         end;

  30. run;

  31. proc sql;
  32.         create table t3 as
  33.                 select
  34.                         compress("第"||put(i,3.)||"次购买和第"||put(i-1,3.)||"次购买平均时间间隔") as Des
  35.                         ,mean(D) as D
  36.                 from t2
  37.                 where i>=2
  38.                 group by i
  39.         ;
  40. quit;
复制代码
没仔细测,看看可以不
已有 1 人评分论坛币 学术水平 热心指数 收起 理由
crackman + 100 + 1 + 1 精彩帖子

总评分: 论坛币 + 100  学术水平 + 1  热心指数 + 1   查看全部评分

Let them be hard, but never unjust

7
sushe1527 发表于 2010-3-26 11:55:53
data crackman;
input customerid purchasetime &$20. @;
z=compress(purchasetime,'-');
date=input(put(z,8.),yymmdd8.);
format date yymmdd10.;
cards;
1                  2009-02-03
1                  2009-02-05
2                  2010-01-02
2                  2010-03-04
3                  2010-09-06
3                  2010-09-09
;
run;

proc sql;
create table crackman1 as
select mean(date) as datemean  from crackman group by customerid;
quit;

data a;
set crackman1;
result=dif(datemean);   /*这里的结果是以天数为单位*/
run;
已有 1 人评分论坛币 学术水平 热心指数 收起 理由
crackman + 100 + 1 + 1 精彩帖子

总评分: 论坛币 + 100  学术水平 + 1  热心指数 + 1   查看全部评分

8
nancy911 发表于 2010-3-26 12:12:51
that's runs OK, thanks all ,

9
cz851218 发表于 2010-3-30 17:51:04
learning hard!

10
醉_清风 发表于 2010-3-30 20:03:59
6楼的学习了 不错
从来不需要想起 永远也不会忘记

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

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