全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3662 4
2016-12-07
如图,这个数据是精确到毫秒的,想要筛选出某一段时间内的数据(比如9:30:00.000~12:00:00.000),应该怎么做呢?
这个时间数据的格式是TIME12.3。
     date               time (HHMMSSXXX)


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-12-7 23:03:22
你可以使用HMS
hms(hour,minute,second)
只要数值介于中间 就能筛选
我想应当不致于真的需要精准到毫秒吧
if      hms(9,30,0)<=time<=hms(12,0,0) then output;
这样应该能实现
不过要注意你时间的UTC格式
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-12-8 21:58:35
dogmamongo 发表于 2016-12-7 23:03
你可以使用HMS
hms(hour,minute,second)
只要数值介于中间 就能筛选
用了你的方法成功筛选,谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-12-9 00:30:38
如果一定要精确到毫秒,也是可以的。有两个办法(其实它们本质上是一样的:SAS比较时间时,都是把时间化作秒进行的)。举例如下:

方法一,

data test1;
input time time12.3;
format time time12.3;
if  hms(9,30,00.010) =<  time =< hms(10,30,00.050);    /*注意hms格式:时分秒用逗号,毫秒用圆点*/
cards;
9:30:00.009
9:30:00.010
10:30:00.049
10:30:00.050
10:30:00.051
;
run;

方法2:把要筛选的时间点化作秒,9,30,00.010=34200.010,10,30,00.050=37800.050。

data test2;
input time time12.3;
format time time12.3;
if  34200.010 =<    time =< 37800.050;
cards;
9:30:00.009
9:30:00.010
10:30:00.049
10:30:00.050
10:30:00.051
;
run;

两者结果一样:

                                      Obs            time

                                       1      9:30:00.010
                                       2     10:30:00.049
                                       3     10:30:00.050

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-12-10 15:12:42
mich_ard 发表于 2016-12-9 00:30
如果一定要精确到毫秒,也是可以的。有两个办法(虽然它们本质上是一样的:SAS比较时间时,都是把时间化作秒 ...
好方法,原来时间函数里面可以用原点加上毫秒,谢谢你!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群