2017-10-23 6 views
1

これは繰り返しの質問ですが、今は解決策を見つけるのに何時間も費やしており、助けてくれて非常に感謝しています。日付/時間係数変数を使用したサブセットデータフレーム

データフレームに変数timestampがあります。これは現在ファクタとして格納されています。 timestampは、dd/mm/yyyyの形式の日付と時刻です.hh:mm:ss:ssssss

timestamp変数を使用してデータフレームのサブセットを作成したいと考えています。 00:02:00および09/10/2017 00:06:00。

私は順序付けられた要素に変換しようとしましたが、サブセット化に役立つPOSIXltには変換しようとしましたが、成功しませんでした。

は、ここで任意のヘルプ

df <- data.frame(timestamp=c("09/10/2017 00:00:00:000000", "09/10/2017 00:01:00:000000", "09/10/2017 00:02:00:000000", 
       "09/10/2017 00:03:00:000000", "09/10/2017 00:04:00:000000", "09/10/2017 00:05:00:000000", 
       "09/10/2017 00:06:00:000000", "09/10/2017 00:07:00:000000", "09/10/2017 00:08:00:000000", 
       "09/10/2017 00:09:00:000000", "09/10/2017 00:10:00:000000", "09/10/2017 00:00:00:000000", 
       "09/10/2017 00:01:00:000000", "09/10/2017 00:02:00:000000", "09/10/2017 00:03:00:000000", 
       "09/10/2017 00:04:00:000000", "09/10/2017 00:05:00:000000", "09/10/2017 00:06:00:000000", 
       "09/10/2017 00:07:00:000000", "09/10/2017 00:08:00:000000", "09/10/2017 00:09:00:000000", 
       "09/10/2017 00:10:00:000000"), b=c (1:22)) 
+0

パッケージ 'lubridate'を見ましたか? – steveb

+1

[Rの日付でサブセットを選択](https://stackoverflow.com/questions/17244077/select-subset-by-date-in-r)の可能な複製 – Masoud

答えて

1

のために事前にありがとうございlubridate

require(lubridate); 

# Convert timestamps to POSIXct time&date 
df$timestamp <- dmy_hms(gsub(":000000", "", df$timestamp)); 

# These are your query start/stop dates&times 
start <- "09/10/2017 00:02:00"; 
stop <- "09/10/2017 00:06:00"; 
interval <- interval(dmy_hms(start), dmy_hms(stop)); 

# Return entries that fall within query interval 
df[df$timestamp %within% interval, ]; 
#  timestamp b 
#3 2017-10-09 00:02:00 3 
#4 2017-10-09 00:03:00 4 
#5 2017-10-09 00:04:00 5 
#6 2017-10-09 00:05:00 6 
#7 2017-10-09 00:06:00 7 
#14 2017-10-09 00:02:00 14 
#15 2017-10-09 00:03:00 15 
#16 2017-10-09 00:04:00 16 
#17 2017-10-09 00:05:00 17 
#18 2017-10-09 00:06:00 18 

か、同じ結果を与えるsubset(df, timestamp %within% interval)を使用を使用してソリューションです。より一般的な使用のための関数でこれを囲むのがベストです。

関連する問題