1

サンプルのデータフレームがある場合:

Date <- c("05/12/2012 05:17:00", "05/12/2012 06:10:00", "05/12/2012 06:12:00", "05/12/2012 06:14:00", 
      "06/12/2012 05:25:00", "06/12/2012 06:55:00", "06/12/2012 06:19:00", "06/12/2012 08:00:00",
      "07/12/2012 05:00:00", "07/12/2012 05:19:00", "07/12/2012 06:04:00",
      "07/12/2012 06:59:00")
Date <- strptime(Date, "%d/%m/%Y %H:%M")
a <- sample(12)
hour <- as.numeric(format(Date, "%H"))
min <- as.numeric(format(Date, "%M")) / 60
hours_mins <- hour + min

df1 <- data.frame(Date,a,hour, min, hours_mins, stringsAsFactors = FALSE)

05:15 と 06:15 の間のデータのみを (任意の日に) 残して、データフレームをサブセット化できるようにしたいと考えています。

時間と分を 10 進数の変数に変換し、次のようなことができることを期待しました。

df1[df1$hours_mins >= '5.25' & df1$hours_mins < '6.25']

...しかし、残念ながらこれは機能しません。誰か提案はありますか?

4

2 に答える 2

1

引用符を削除し、最後にコンマを追加します

df1[df1$hours_mins >= 5.25 & df1$hours_mins < 6.25,]

于 2013-02-20T13:55:13.117 に答える
0

実際、POSIXlt オブジェクトの利点の 1 つは、重要な日付情報が自動的に保持されることです。

Date1 <- strptime(c("05/12/2012 05:17:00", "05/12/2012 06:10:00", "05/12/2012 06:12:00", "05/12/2012 06:14:00", 
          "06/12/2012 05:25:00", "06/12/2012 06:55:00", "06/12/2012 06:19:00", "06/12/2012 08:00:00",
          "07/12/2012 05:00:00", "07/12/2012 05:19:00", "07/12/2012 06:04:00",
          "07/12/2012 06:59:00"), "%d/%m/%Y %H:%M")
class(Date1)
a <- sample(12)

#please note since strptime() is used Date1 contains "hour", "min" etc
df1 <- data.frame(Date1, hr=Date1$hour, min=Date1$min, cum_hrs=Date1$min/60+Date1$hour, a, stringsAsFactors = FALSE)
df1[(df1$hr + df1$min/60>= 5.25) & (df1$hr + df1$min/60< 6.25),]

また、合計時間 (10 進数) が必要な場合は、データフレームに列を追加しました。これがあなたのニーズを満たすことを願っています。

于 2013-02-20T14:32:27.520 に答える