楼主: addictedtome
5067 4

[原创博文] SAS求同一变量下的差值 [推广有奖]

  • 0关注
  • 4粉丝

已卖:22份资源

副教授

43%

还不是VIP/贵宾

-

威望
0
论坛币
183 个
通用积分
10.6659
学术水平
21 点
热心指数
30 点
信用等级
14 点
经验
22165 点
帖子
638
精华
0
在线时间
1000 小时
注册时间
2008-8-31
最后登录
2025-7-6

楼主
addictedtome 发表于 2010-5-28 11:03:20 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
数据是这样的:

name  date   egg    change
1           3-1     2
1           3-2     3     
1           3-3     5
1           3-4      1
2           3-1     1
2           3-2     3
3           3-1     3
3           3-2      4
3           3-3      2
4           3-1       1
4           3-2       1
5           3-1      5
5           3-1      4
5           3-2      7
5           3-3      3

需要求每个name,date (t)的egg的值 与 date (t-1)的egg的值的差额。例如name 1, date 3-2时的change=3-2=1,

求高手赐教!
二维码

扫码加我 拉你入群

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

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

关键词:change date name CHAN Hang change

回帖推荐

bobguy 发表于4楼  查看完整内容

If I understand it correct, the change is defined within the name block. Here is a sample problem. data a; input name date $ egg; datalines; 1 3-1 2 1 3-2 3 1 3-3 5 1 3-4 1 2 3-1 1 2 3-2 3 3 3-1 3 3 3-2 4 3 3-3 2 4 3-1 1 4 3-2 1 5 3-1 5 5 3-1 4 5 3-2 7 5 3-3 3 ; data b; set a; by name; change=dif(egg); if first.name then change=.; run; proc print; run;

本帖被以下文库推荐

沙发
yz7891 发表于 2010-5-28 11:27:51
  1. data a;
  2. input name date $ egg;
  3. datalines;
  4. 1 3-1 2
  5. 1 3-2 3
  6. 1 3-3 5
  7. 1 3-4 1
  8. 2 3-1 1
  9. 2 3-2 3
  10. 3 3-1 3
  11. 3 3-2 4
  12. 3 3-3 2
  13. 4 3-1 1
  14. 4 3-2 1
  15. 5 3-1 5
  16. 5 3-1 4
  17. 5 3-2 7
  18. 5 3-3 3
  19. ;
  20. run;
  21. data b;
  22.         retain change1;
  23.         set a;
  24.         by name;
  25.         if first.name then do;
  26.             change=.;
  27.             change1=egg;
  28.         end;
  29.         else do;
  30.             change=egg-change1;
  31.         end;
  32.         change1=egg;
  33.         drop change1;
  34. run;
复制代码

藤椅
crackman 发表于 2010-5-28 11:36:12
data b;
set a;
change=egg-lag(egg);
run;

板凳
bobguy 发表于 2010-5-28 11:37:01
addictedtome 发表于 2010-5-28 11:03
数据是这样的:

name  date   egg    change
1           3-1     2
1           3-2     3     
1           3-3     5
1           3-4      1
2           3-1     1
2           3-2     3
3           3-1     3
3           3-2      4
3           3-3      2
4           3-1       1
4           3-2       1
5           3-1      5
5           3-1      4
5           3-2      7
5           3-3      3

需要求每个name,date (t)的egg的值 与 date (t-1)的egg的值的差额。例如name 1, date 3-2时的change=3-2=1,

求高手赐教!
If I understand it correct, the change is defined within the name block. Here is a sample problem.

data a;
input name date $ egg;
datalines;
1 3-1 2
1 3-2 3
1 3-3 5
1 3-4 1
2 3-1 1
2 3-2 3
3 3-1 3
3 3-2 4
3 3-3 2
4 3-1 1
4 3-2 1
5 3-1 5
5 3-1 4
5 3-2 7
5 3-3 3
;

data b;
  set a;
  by name;
  change=dif(egg);
  if first.name then change=.;
run;

proc print; run;
已有 1 人评分热心指数 收起 理由
crackman + 1

总评分: 热心指数 + 1   查看全部评分

报纸
addictedtome 发表于 2010-5-28 11:54:39
bobguy 发表于 2010-5-28 11:37
addictedtome 发表于 2010-5-28 11:03
数据是这样的:

name  date   egg    change
1           3-1     2
1           3-2     3     
1           3-3     5
1           3-4      1
2           3-1     1
2           3-2     3
3           3-1     3
3           3-2      4
3           3-3      2
4           3-1       1
4           3-2       1
5           3-1      5
5           3-1      4
5           3-2      7
5           3-3      3

需要求每个name,date (t)的egg的值 与 date (t-1)的egg的值的差额。例如name 1, date 3-2时的change=3-2=1,

求高手赐教!
If I understand it correct, the change is defined within the name block. Here is a sample problem.

data a;
input name date $ egg;
datalines;
1 3-1 2
1 3-2 3
1 3-3 5
1 3-4 1
2 3-1 1
2 3-2 3
3 3-1 3
3 3-2 4
3 3-3 2
4 3-1 1
4 3-2 1
5 3-1 5
5 3-1 4
5 3-2 7
5 3-3 3
;

data b;
  set a;
  by name;
  change=dif(egg);
  if first.name then change=.;
run;

proc print; run;
你的理解是对的,数据结果正确,谢谢。

2、3楼朋友没有把first.name的值去掉。

谢谢各位兄台!

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-23 22:39