我正在对一个名为" 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。
有办法做到这一点吗?
答案 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=
选项创建现有数据的视图,而不是复制所有数据。
尝试interval = intnx('SECOND5', time, 0, 'begin');
我这台电脑上没有SAS。如果它不起作用,请在评论中做出反应,我会在工作中对其进行测试。