由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Statistics版 - 【求助】问一个SAS编程的问题,谢谢大家
相关主题
再请教一个sas问题请教一sas code
SAS初级问题:怎样standardize一个变量?Use SAS to fill in missing values?
[合集] 问个SAS入门级的问题SAS菜鸟求助,请好心达人帮个忙解决一个SAS问题
请教SAS - 这个小程序怎么编请问如何改变 data set's column 位置. 比如name, id 换成id, name.
求教数据分析的问题SAS question
请教:SAS 处理Repeated Measurement的问题菜鸟的SAS问题,向高手求助
[合集] SAS里如何实现LOCF(LAST OBS CARRIED FORWARD)?有没有SAS最新的机经
请教SAS问题请教一个SAS的问题
相关话题的讨论汇总
话题: hh话题: mm话题: time话题: newtime话题: sas
进入Statistics版参与讨论
1 (共1页)
s****l
发帖数: 129
1
现在我有一个data如下,
SUBJID VISID TIME VALUE
1 1 HH:MM:SS1 1
1 1 HH:MM:SS2 2
1 1 HH:MM:SS3 3
1 1 HH:MM:SS4 4
1 1 HH:MM:SS5 5
1 1 HH:MM:SS6 6
1 1 HH:MM:SS7 7
现在想把两次时间相隔不超过10分钟的归为一组,然后算均值。比如HH:MM:SS1与HH:MM
:SS2相隔小于10分钟,HH:MM:SS2与HH:MM:SS3相隔小于10分钟,HH:MM:SS3与HH:MM:SS4
相隔小于10分钟,那么把前4个归为一组,HH:MM:SS5-HH:MM:SS7类似,归为第二组,然
后求这两个组的均值。
在SAS里怎么实现?请大家不吝赐教!!!
谢谢!
l****u
发帖数: 529
2
array
s****l
发帖数: 129
3
能否具体一些?谢谢!!

【在 l****u 的大作中提到】
: array
a*****3
发帖数: 601
4
有意思。但要确认一下定义,比如,
2, 5,9,17 应该分成两组, 2, 5 组2: 9, 17,
还是分成一组,2,5,9,组2: 17 ??
k*****u
发帖数: 1688
5
用一个lag函数,然后每个加一个indicator
options formdlim='-';
data test;
input a;
cards;
1
2
3
4
16
28
;
run;
data test;
set test;
b=lag(a);
key=_n_;
run;
data test (drop=key b);
do key=2 by 1 until (last);
set test end=last;
if a-b<10 then id=1;
else id=2;
output;
end;
run;

proc print;
run;
g****8
发帖数: 2828
6
用retain?
刚刚查到的,有个sas function dif()
s****l
发帖数: 129
7
谢谢大家的回复,最后我用retain解决的这个问题, 不过从大家的回复中学到了不少
。下面是我的解决方法:
by subjid visid time ;
id + 1 ;
if first.visid then id = 1 ;
pre_time = lag(time) ;
if id = 1 then do ;
newtime = time ; pre_time = . ;
end ;
retain newtime ;
timediff = time - pre_time ;
if timediff > 10 then newtime = time;
run ;
Next calculate the mean within each "newtime" group.
a*****3
发帖数: 601
8
interesting method. 但我有些reservation哦.
持谨慎的保留意见.

【在 k*****u 的大作中提到】
: 用一个lag函数,然后每个加一个indicator
: options formdlim='-';
: data test;
: input a;
: cards;
: 1
: 2
: 3
: 4
: 16

s****l
发帖数: 129
9
谢谢大家的回复,最后我用retain解决的这个问题, 不过从大家的回复中学到了不少
。下面是我的解决方法:
by subjid visid time ;
id + 1 ;
if first.visid then id = 1 ;
pre_time = lag(time) ;
if id = 1 then do ;
newtime = time ; pre_time = . ;
end ;
retain newtime ;
timediff = time - pre_time ;
if timediff > 10 then newtime = time;
run ;
Next calculate the mean within each "newtime" group.
a*****3
发帖数: 601
10
还是没看太懂,..能不能给个sample_data run一下.

【在 s****l 的大作中提到】
: 谢谢大家的回复,最后我用retain解决的这个问题, 不过从大家的回复中学到了不少
: 。下面是我的解决方法:
: by subjid visid time ;
: id + 1 ;
: if first.visid then id = 1 ;
: pre_time = lag(time) ;
: if id = 1 then do ;
: newtime = time ; pre_time = . ;
: end ;
: retain newtime ;

g****8
发帖数: 2828
11
楼主,莫搞这么复杂,用现成的 就一个dif()函数解决了。咱们写这么多SAS会哭的。

【在 s****l 的大作中提到】
: 谢谢大家的回复,最后我用retain解决的这个问题, 不过从大家的回复中学到了不少
: 。下面是我的解决方法:
: by subjid visid time ;
: id + 1 ;
: if first.visid then id = 1 ;
: pre_time = lag(time) ;
: if id = 1 then do ;
: newtime = time ; pre_time = . ;
: end ;
: retain newtime ;

g****8
发帖数: 2828
12
data sample;
input TIME time8.;
cards;
11:30:01
11:40:01
11:51:01
11:52:01
12:20:01
13:32:01
13:35:01
14:50:02
14:52:02
15:12:01
;
run;
data sample;
set sample;
retain gr 1;
if dif(time) >600 then gr=_N_;
format time time8.;
run;
l*******s
发帖数: 437
13
learned, mark
s****l
发帖数: 129
14
Thanks all for your kind replying!
1 (共1页)
进入Statistics版参与讨论
相关主题
请教一个SAS的问题求教数据分析的问题
SAS help请教:SAS 处理Repeated Measurement的问题
请教个SAS问题[合集] SAS里如何实现LOCF(LAST OBS CARRIED FORWARD)?
SAS里面怎么设置vector请教SAS问题
再请教一个sas问题请教一sas code
SAS初级问题:怎样standardize一个变量?Use SAS to fill in missing values?
[合集] 问个SAS入门级的问题SAS菜鸟求助,请好心达人帮个忙解决一个SAS问题
请教SAS - 这个小程序怎么编请问如何改变 data set's column 位置. 比如name, id 换成id, name.
相关话题的讨论汇总
话题: hh话题: mm话题: time话题: newtime话题: sas