SAS基于时间间隔对行进行分组

时间:2017-06-11 15:41:17

标签: sas

我正在对一个名为" time"的变量的数据集进行一些分析。时间格式为HH:MM:SS。

但是,现在我想在两个不同的分析中分别基于5秒和1分钟的时间间隔对行进行分组。

我在线检查了一些StackOverflow帖子,但似乎他们使用了一个名为" Interval"的变量。从1开始,当间隔结束时增加。

data _quotes_interval; 
  set _quotes_processed;
  interval = intck('MINUTE1',"09:30:00"t,time)+1;
run;

我想要做的是保持时间格式。例如,如果原始时间是9:00:30,并且我正在进行1分钟的间隔,我想将时间更改为9:00:00。

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:2)

SAS将时间存储为秒数。由于你想要舍入到最近的分钟或5分钟,翻译将是,5 * 60 = 300& 60秒SAS圆形功能支持此功能。

time_nearest_minute = round(time, 60);
time_nearest_minute5 = round(time, 300);

根据评论进行编辑:

Time_nearest_second5 = round(time, 5);

答案 1 :(得分:1)

对于按分钟处理,您可以使用

data _quotes_interval / view = _quotes_interval; 
  set _quotes_processed;
  interval = intnx('MINUTE', time, 0, 'begin');
run;
默认情况下,

intnx用于添加或减去时间间隔。在这里我添加0个分钟,但这只是因为我需要第四个参数的函数,它指定返回1分钟间隔的'begin'

PS:出于性能原因,我会使用view=选项创建现有数据的视图,而不是复制所有数据。

按5秒间隔处理

尝试interval = intnx('SECOND5', time, 0, 'begin');

声明:

我这台电脑上没有SAS。如果它不起作用,请在评论中做出反应,我会在工作中对其进行测试。