本文介绍了根据时间范围对行进行子集的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个看起来像这样的数据框

I have a data frame that looks like that

            date_time loc_id node  energy   kgco2
1 2009-02-27 00:11:08     87  103 0.00000 0.00000
2 2009-02-27 01:05:05     87  103 7.00000 3.75900
3 2009-02-27 02:05:05     87  103 6.40039 3.43701
4 2009-02-27 03:05:05     87  103 4.79883 2.57697
5 2009-02-27 04:05:05     87  103 4.10156 2.20254
6 2009-02-27 05:05:05     87  103 2.59961 1.39599

无论如何我可以根据时间范围对其进行子集化,例如,凌晨 2 点到凌晨 5 点.然后我应该得到如下所示的结果:

Is there anyway I can subset it according to range of time, for example, 2am to 5am. I should then get a result that looks like this:

            date_time loc_id node  energy   kgco2
3 2009-02-27 02:05:05     87  103 6.40039 3.43701
4 2009-02-27 03:05:05     87  103 4.79883 2.57697
5 2009-02-27 04:05:05     87  103 4.10156 2.20254

推荐答案

我会使用 lubridate 包和 hour() 函数来让你的生活更轻松...

I'd use the lubridate package and the hour() function to make your life easier...

require( lubridate )

with( df , df[ hour( date_time ) >= 2 & hour( date_time ) < 5 , ] )

#            date_time loc_id node  energy   kgco2
#3 2009-02-27 02:05:05     87  103 6.40039 3.43701
#4 2009-02-27 03:05:05     87  103 4.79883 2.57697
#5 2009-02-27 04:05:05     87  103 4.10156 2.20254

这篇关于根据时间范围对行进行子集的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-11 02:32