1

私はたくさんの日付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)

df時間部分が午前9時15分より長く午後5時25分未満の部分を抽出したいと思います。時間と分の成分を別々に抽出して比較を書くこともできますが、もっとエレガントな方法があるのではないかと思いました。誰かが提案をすることができますか?

私の現在の方法は次のとおりです。

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))
4

1 に答える 1

2

私の提案は、data.frame の代わりに xts を使用することです。

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
于 2012-08-07T20:24:58.953 に答える