楼主: ertyuj
2509 5

[问答] 悬赏求助:怎么用sas来计算一列数(和前一行相关) [推广有奖]

  • 0关注
  • 1粉丝

硕士生

40%

还不是VIP/贵宾

-

威望
0
论坛币
254 个
通用积分
0.7615
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
-351 点
帖子
136
精华
0
在线时间
164 小时
注册时间
2007-2-7
最后登录
2022-3-17

50论坛币
我有如下表格,按照顾客号码cust_id 和日期period排过序了。原始表格不包括y,怎么用sas编程来计算y?最后y的数值应当像我下面表格列出的一样。

y的要求如下:对于一个cust_id的第一个period,y=x1(表格中y的第一个数1000是这么来的);对于这个cust_id的其他period,y=前期的x2乘以当期的x3(表格中y的第二个数是6,因为x2前期数值=3,x3当期数值=2)。估计需要使用retain或者lag,我不清楚。

cust_id

period

x1

x2

x3

y

1

1

1000

3

3

1,000

1

2

1000

5

2

6

1

3

1000

6

4

20

1

4

1000

7

6

36

1

5

1000

3

2

14

2

1

2000

6

5

2,000

2

2

2000

4

6

36

2

3

2000

3

1

4


最佳答案

小熊包 查看完整内容

data a; input cust_id period x1 x2 x3; cards; 1 1 1000 3 3 1 2 1000 5 2 1 3 1000 6 4 1 4 1000 7 6 1 5 1000 3 2 2 1 2000 6 5 2 2 2000 4 6 2 3 2000 3 1 ; run; proc sort data=a; by cust_id period; run; data b; set a; by cust_id period; x2_=lag(x2); if first.cust_id then do; y=x1; x2_=.; end; else y=x3*x2_; run;
关键词:悬赏求助 period RETAIN SAS编程 Rio

回帖推荐

小熊包 发表于2楼  查看完整内容

data a; input cust_id period x1 x2 x3; cards; 1 1 1000 3 3 1 2 1000 5 2 1 3 1000 6 4 1 4 1000 7 6 1 5 1000 3 2 2 1 2000 6 5 2 2 2000 4 6 2 3 2000 3 1 ; run; proc sort data=a; by cust_id period; run; data b; set a; by cust_id period; x2_=lag(x2); if first.cust_id then do; y=x1; x2_=.; end; else y=x3*x2_; run;
数据科学和机器学习博客:https://shorturl.at/jtHTW
沙发
小熊包 发表于 2018-11-12 12:54:09 |只看作者 |坛友微信交流群
data a;
input cust_id period x1 x2 x3;
cards;
1 1 1000 3 3
1 2 1000 5 2
1 3 1000 6 4
1 4 1000 7 6
1 5 1000 3 2
2 1 2000 6 5
2 2 2000 4 6
2 3 2000 3 1
;
run;

proc sort data=a;
by cust_id period;
run;

data b;
set a;
by cust_id period;
x2_=lag(x2);
if first.cust_id then do; y=x1; x2_=.; end;
else y=x3*x2_;
run;
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
admin_kefu + 30 + 2 + 2 + 2 热心帮助其他会员

总评分: 论坛币 + 30  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

使用道具

藤椅
ertyuj 发表于 2018-11-12 14:21:20 |只看作者 |坛友微信交流群
小熊包 发表于 2018-11-12 12:54
data a;
input cust_id period x1 x2 x3;
cards;
我又开了一贴,(正在审核中),还请也给看看![问答] 悬赏求助:如何用SAS编程来计算一列数(和前面的行以及自身相关) (审核中) [推广有奖]。

y的要求如下:对于一个cust_id的第一个period,y=x1;对于这个cust_id的其他period,y=前期的y + 前期的x2 + 当期的x3。估计需要使用retain或者lag,我不清楚。

使用道具

板凳
ertyuj 发表于 2018-11-12 14:33:27 |只看作者 |坛友微信交流群
ertyuj 发表于 2018-11-12 14:21
我又开了一贴,(正在审核中),还请也给看看![问答] 悬赏求助:如何用SAS编程来计算一列数(和前面的行 ...
这是新帖的网址:https://bbs.pinggu.org/forum.php?mod=viewthread&tid=6746616&page=1&extra=#pid54710800

使用道具

报纸
ertyuj 发表于 2018-11-12 14:34:51 |只看作者 |坛友微信交流群
小熊包 发表于 2018-11-12 12:54
data a;
input cust_id period x1 x2 x3;
cards;
这是新帖的网址:https://bbs.pinggu.org/forum.php?mod=viewthread&tid=6746616&page=1&extra=#pid54710800

使用道具

地板
小熊包 发表于 2018-11-12 15:09:58 |只看作者 |坛友微信交流群
ertyuj 发表于 2018-11-12 14:34
这是新帖的网址:https://bbs.pinggu.org/forum.php?mod=viewthread&tid=6746616&page=1&extra=#pid547108 ...
已回复,请查看。

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-23 17:07