像其他人一样,我不是很确定你到底想要实现什么。这是我的理解。我猜你有病人活动的数据集。它包含测量的时间戳和测量的结果(如果是站立或铺设)。根据图像中的输入数据集,我创建了如下内容:
代码语言:javascript复制data sequences(drop=lying100 length start_end);
set test;
BY NOTSORTED lying100;
retain first_val;
if FIRST.lying100 and lying100 eq 1 then
first_val=length;
if LAST.lying100 and lying100 eq 1 then
do;
duration=length-first_val;
output;
first_val=-1;
end;
run;如果你想在其中添加时间戳,对我来说这听起来更合理,那么代码应该是这样的:
代码语言:javascript复制data sequences(drop=lying100 length start_end timeline);
set test;
BY NOTSORTED lying100;
retain start_time;
format start_time datetime20.;
format end_time datetime20.;
if FIRST.lying100 and lying100 eq 1 then do;
start_time=timeline;
end;
if LAST.lying100 and lying100 eq 1 then
do;
end_time=timeline;
duration=(end_time-start_time)/60;
output;
end;
run;哪里
持续时间:将是患者开始的开始时间laying
end_time :将是患者卧床(他/她站起来)的结束时间
start_time:患者卧床的分钟数
附言:我没有使用start_end柱。
我的测试数据使我的示例完整:
代码语言:javascript复制data test;
infile datalines delimiter=',';
input lying100 length start_end $;
datalines;
0,0,
0,0,
1,1,start
1,2,
1,3,
1,4,
1,5,end
0,0,
0,0,
1,1,start
1,2,
1,3,
1,4,
1,5,
1,6,end
0,0,
0,0,
;
data test;
set test;
format timeline datetime20.;
retain timeline '07sep2018 10:00:00'dt;
timeline=timeline+5*60;
run;