楼主: libravilla
5675 8

请教如何用sas计算两列数值的差? [推广有奖]

  • 0关注
  • 0粉丝

初中生

71%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
230 点
帖子
14
精华
0
在线时间
14 小时
注册时间
2009-9-24
最后登录
2019-5-7

楼主
libravilla 发表于 2012-4-17 22:32:51 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如三列数字

ID    #    amt      interval
A01  1      500          0
A01  2    2000    1500
A01  3    2200      200

如何sas计算出interval?

我尝试用retain,可是失败
data aa1;
   set aa;
   by ID;
   retain interval;
   if first.ID then do;
   interval=0;
   end;
   interval=amt-interval;
run;
出来是:
interval
500 (i.e. amt1)
1500  (i.e. 2000-500, right)
700 (i.e. 2200-1500)

请教高手指正和支招啊~~
   
二维码

扫码加我 拉你入群

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

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

关键词:如何用 Interval RETAIN inter RIGHT 计算 如何

沙发
2870898 发表于 2012-4-17 23:07:14
data aa1;
set aa;
by id;
retain y;
if first.id then do; interval=0;
  y=amt;
  end;
  else do;
         interval=amt-y;
                 y=amt;
  end;
  drop y;
  run;
应该行 自己试那的。我也是新手,所以得谨慎.。 呵呵!!

藤椅
矛盾的慧根 发表于 2012-4-17 23:30:28
其实你给它定义一个时间,然后用一个差分函数不就可以了吗

板凳
hopewell 发表于 2012-4-18 08:41:18
  1. data raw;
  2.     input ID $ seq amt;
  3.     interval=max(dif(amt),0);
  4. datalines;
  5. A01  1    500
  6. A01  2    2000
  7. A01  3    2200
  8. ;
复制代码
观钓颇逾垂钓趣 种花何问看花谁

报纸
libravilla 发表于 2012-4-18 11:47:54
2870898 发表于 2012-4-17 23:07
data aa1;
set aa;
by id;
试过了,可以的,谢谢阿~~

地板
libravilla 发表于 2012-4-18 11:49:13
矛盾的慧根 发表于 2012-4-17 23:30
其实你给它定义一个时间,然后用一个差分函数不就可以了吗
可否给个sample code?菜鸟一枚,还请赐教阿~

7
libravilla 发表于 2012-4-18 11:51:50
hopewell 发表于 2012-4-18 08:41
生猛的公式,谢谢啦~

8
chendonghui1987 发表于 2012-4-18 15:59:32
hopewell是正解.
data raw;
    input ID $ seq amt;
    interval=max(dif(amt),0);
datalines;tan
A01  1    500
A01  2    2000
A01  3    2200
;

9
mymine 发表于 2012-4-18 16:26:42
没有搞懂,用那么复杂吗?

data a;
set a;
interval=amt-lag(amt);
run;

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

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