全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5008 4
2010-05-28
数据是这样的:

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,

求高手赐教!
二维码

扫码加我 拉你入群

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

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

全部回复
2010-5-28 11:27:51
复制代码
二维码

扫码加我 拉你入群

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

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

2010-5-28 11:36:12
data b;
set a;
change=egg-lag(egg);
run;
二维码

扫码加我 拉你入群

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

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

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;
二维码

扫码加我 拉你入群

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

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

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的值去掉。

谢谢各位兄台!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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