SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 661|回复: 0
打印 上一主题 下一主题

data manipulation

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2006-2-5 18:29:34 | 只看该作者

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。

希望大家多多指点,无论是语句还是思路。先拜谢了!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-9 14:07 , Processed in 0.069019 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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