SAS中文论坛

标题: data manipulation [打印本页]

作者: shiyiming    时间: 2006-2-5 18:29
标题: data manipulation
现有这样一个问题

有一个现成的数据集(import进来的)包含以下变量:

subject $, time, con$

例如:
subject time con
1   0    0
1   5    0
1   10  4
1   20  5
1   30  8
1   40  12
1   50  30
1   [color=blue:5441e]60[/color:5441e]  90
1   90  50
1   120 40
1   150 30
1   180 20
1   210 16
1   240 10
1   300 [color=red:5441e]0[/color:5441e]
1   360 [color=red:5441e]0[/color:5441e]
2   0    0
2   5    0
2   10  13
2   20  20
........

数据的规律是:每个subject都有(0-360min)16个时间点。而每个subject的con值的趋势都是由低到高再到低,且开头结尾都会有数量不定的0。

定义两个变量 c_max 和t_max, c_max是con的最大值而t_max是c_max的time值。

现在希望将同一个subject中,time>t_max且con=0的那些观测的con变成ND

上面数据集中蓝色的就是t_max,红色的0应该改为ND

由于原始数据已经import成SAS数据集,故只能用set来读取数据。本人试图使用循环语句来做,由于是新手,弄了半天也没成功,觉得应该有办法实现,故拿出来请大家指点指点。

我的思路是这样的:
1 找出每个subject的t_max。
2 用set读取数据if time>t_max and con='0' then con='ND'

不过有个困难是:subject的数目是不定的 我希望让程序自动根据subject的个数来产生相应数目t_max。

希望大家多多指点,无论是语句还是思路。先拜谢了!




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2