我有一个data.frame
,其中包含一堆POSIXct
个日期:
df <- data.frame(dte=as.POSIXct(c("2001-02-03 14:30:00",
"2001-02-04 9:30:00", "2001-02-05 10:30:00")), a=1:3)
我想提取时间部分大于上午9:15且不到下午5:25的df
部分。我可以分别提取小时和分钟的组件并写一个比较,但我认为可能有一种更优雅的方式。有人可以提出建议吗?
我目前的方法是:
df <- subset(df,
(as.numeric(format(dte, "%H")) > 9 & as.numeric(format(dte, "%M")) > 15) |
(as.numeric(format(dte, "%H")) < 17 & as.numeric(format(dte, "%M")) < 25))
答案 0 :(得分:2)
我的建议是使用xts而不是data.frame。
df <- data.frame(dte=as.POSIXct(c("2001-02-03 14:30:00",
"2001-02-04 9:30:00", "2001-02-05 10:30:00")), a=1:3)
library(xts)
x <- xts(df$a, df$dte)
x["T09:15/T17:25"] # returns everything (in your example)
x["T10:15/T14:25"] # returns the correct subset