SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1821|回复: 3
打印 上一主题 下一主题

求助:如何将同一编号的两行数据,相同变量第一行值减去第二行的值?

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-6-18 14:53:02 | 只看该作者

求助:如何将同一编号的两行数据,相同变量第一行值减去第二行的值?

data a;
  input code group  time;
cards;
  1  1  2.5
  1  0  4
  2  1  3
  2  0  5
  3  1  3.5
  3  0  7
  ;
  run;

我想对code相同的两行变量,用第二行的time值减去第一行的time值生成一个新的变量,即对相同code变量,group=0 的那一行的time减去group=1的那一行的time值生成一个新变量,该如何写程序,请大家帮忙,谢谢啦。
回复 支持 反对

使用道具 举报

0

主题

0

帖子

2

积分

新手上路

Rank: 1

积分
2
沙发
发表于 2009-6-18 15:21:31 | 只看该作者

Re: 求助:如何将同一编号的两行数据,相同变量第一行值减去第二行的值?

lag函数
[code:3q3ua16m]data temp;
set a;
code_lag=lag(code);
time_lag=lag(time);
if code=code_lag then time=time-time_lag;
drop code_lag time_lag;
run;[/code:3q3ua16m]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2009-6-18 15:23:19 | 只看该作者

Re: 求助:如何将同一编号的两行数据,相同变量第一行值减去第二行的值?

proc sort data=a; by code group; run;

data b;
        set a;
        by code group;
        retain a;
        if first.code then a=time;
        else a=a-time;
        if last.code then output;
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2009-6-18 16:47:32 | 只看该作者

Re: 求助:如何将同一编号的两行数据,相同变量第一行值减去第二行的值?

vicky1020 和godensjj的程序都能解决,真是高手啊,多谢多谢。  <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-5 21:30 , Processed in 0.067118 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表