我是一个全新的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
答案 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"), ]