Sas 计算行为的持续时间/长度
我在SAS中有一个数据集,有一组人的不同行为,如站立或躺着 现在我想知道,每当洞组做同样的事情(100%站立)时,这些行为的持续时间。我有一个列,上面有Sas 计算行为的持续时间/长度,sas,Sas,我在SAS中有一个数据集,有一组人的不同行为,如站立或躺着 现在我想知道,每当洞组做同样的事情(100%站立)时,这些行为的持续时间。我有一个列,上面有lying100,如果100%的人在说谎,则显示为1,在任何其他情况下显示为0。我还创建了一个列,在其中我用start标记了所有的起点,用end标记了观察的终点(但不确定是否有必要) 现在我想知道每个说谎阶段(从开始到结束)有多长 我的想象是这样的。像其他人一样,我不确定你到底想要实现什么。 这就是我的理解。我想你有病人活动的数据集。它包含测量时
lying100
,如果100%的人在说谎,则显示为1,在任何其他情况下显示为0。我还创建了一个列,在其中我用start
标记了所有的起点,用end
标记了观察的终点(但不确定是否有必要)
现在我想知道每个说谎阶段(从开始到结束)有多长
我的想象是这样的。像其他人一样,我不确定你到底想要实现什么。 这就是我的理解。我想你有病人活动的数据集。它包含测量时间戳和测量结果(如果是站立或铺设)。基于图像中的输入数据集,我创建了如下内容:
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;
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;
如果您想在其中添加时间戳,对我来说这听起来也有点合理,那么代码将如下所示:
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;
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;
在哪里
- 开始时间:将是患者开始下床的开始时间
- 结束时间:将是患者下床(他/她站起来)时的结束时间
- 持续时间:患者下床的分钟数
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;
你试过什么吗?我试过first.variable和last.variable。问题是,我无法按排序方式对数据进行排序,因为为了能够确定长度,我需要按排序方式对数据进行排序。您是否可以将数据键入“have”,然后将结果数据显示为“want”,而不是图片。描述将项目标记为开始和结束的逻辑。请说明“长度”是指从开始到结束的记录数,还是长度值的总和?此外,还应包括任何尝试过的代码以及出现的日志警告或错误。您通常可以在BY group语句中使用NOTSORTED选项,但如果您显示了示例数据以及您期望的最小值,则该选项将非常有用。