R-如何在没有提供日期的时间范围内对数据进行子集化?

时间:2016-05-24 14:44:24

标签: r subset

我是一个全新的R用户。我在一段时间内拥有非常大量的数据,第一列中的时间增加了1/32秒。我想提取属于特定时间范围的数据部分;例如,下午12:11:08和下午12:11:11之间的所有数据。但是,此列中的时间没有任何日期。因此,我无法弄清楚如何应用lubridate,POSIXct或任何其他时间函数,因为它们都需要日期。有没有办法让我使用仅限时间函数对数据进行子集化?谢谢你的时间。

time           id  result  
  12:11:08     10  200
  12:11:09     11  276 
  12:11:10     12  398 
  12:11:11     13  299 
  12:11:12     14  192  
  12:11:13     15  392

1 个答案:

答案 0 :(得分:0)

问题在于POSIXct/POSIXlt存储的时间来自" 1970-01-01"和你在一起时区。所以最初如果你设置

as.POSIXct("12:11:10",format="%H:%M:%S")

它返回完整的日期格式

[1] "2016-05-24 12:11:10 EEST"

您可以使用默认日期设置轻松配置时间(在此示例中,功能显示" 12:11:10"

之后的记录
 df<-data.frame(time=c("12:11:08","12:11:09","12:11:10","12:11:11","12:11:12","12:11:13"), 
               id=c("10", "11","12","13","14","15"),
               result=c("200","276","398","299","192","392"))

df[as.POSIXct(df$time,format="%H:%M:%S")>as.POSIXct("12:11:10",format="%H:%M:%S"),]

     time id result
4 12:11:11 13    299
5 12:11:12 14    192
6 12:11:13 15    392

另一个很好的解决方案是使用chrone

library(chrone)
df[chron(times=df$time)>chron(times="12:11:10"), ]