DFという名前のデータ・フレームに、時刻と日付の列があります。これらの列の値に基づいてDFをサブセット化したいと思います。日付については、DATESに日付のリストがあり、DF $日付がDATESにあるDF行をサブセット化しています。当分の間、私は00:04:00から00:06:00にサブセットを作りたいと思います。後者のやり方はわかりません。タイム・シーケンスに基づいてデータ・フレームをサブセット化する
理想的には、00:04:00から00:06:00のように範囲を指定することと、00:04のように先読みする開始点と分を指定することによって、両方をサブセット化したいと考えています。 00および3分(2つの異なる方法)。私はすべてが時間のシーケンスを作ることになり、そのようなシーケンスを別のベクトルに置くことになると思っています。
これは簡単に再現可能な例です。私はこれを行う一般的な方法を模索しています。なぜなら、実際には大きな時間の部分集合にしたいからです。この例では一致する日付は1つしかありませんが、実際には複数の日付にまたがる一致する日付が多数存在することにも注意してください。だから、私はそれが時間シーケンスを作るためにPOSIXlt
を使用することはできないと信じている理由です。どうもありがとうございました。
#DF looks like this:
# DateTime XXX Time Date
#1371 2016-04-25 00:08:00 14 00:08:00 2016-04-25
#1372 2016-04-25 00:07:00 13 00:07:00 2016-04-25
#1373 2016-04-25 00:06:00 14 00:06:00 2016-04-25
#1374 2016-04-25 00:05:00 3 00:05:00 2016-04-25
#1375 2016-04-25 00:04:00 2 00:04:00 2016-04-25
#1376 2016-04-25 00:03:00 4 00:03:00 2016-04-25
#1377 2016-04-25 00:02:00 6 00:02:00 2016-04-25
#1387 2016-04-24 23:52:00 41 23:52:00 2016-04-24
#1388 2016-04-24 23:51:00 93 23:51:00 2016-04-24
#1389 2016-04-24 23:50:00 53 23:50:00 2016-04-24
#Code for DF, DATES, and to subset DF based on DATES
DF <- structure(list(DateTime = structure(list(sec = c(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), min = c(8L, 7L, 6L, 5L, 4L, 3L, 2L, 1L, 0L, 59L, 58L, 57L, 56L, 55L, 54L, 53L, 52L, 51L, 50L), hour = c(0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 23L, 23L, 23L, 23L, 23L, 23L, 23L, 23L, 23L, 23L), mday = c(25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 25L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L, 24L), mon = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L), year = c(116L, 116L, 116L, 116L, 116L, 116L, 116L, 116L, 116L, 116L, 116L, 116L, 116L, 116L, 116L, 116L, 116L, 116L, 116L), wday = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L), yday = c(115L, 115L, 115L, 115L, 115L, 115L, 115L, 115L, 115L, 114L, 114L, 114L, 114L, 114L, 114L, 114L, 114L, 114L, 114L), isdst = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), zone = c("EDT", "EDT", "EDT", "EDT", "EDT", "EDT", "EDT", "EDT", "EDT", "EDT", "EDT", "EDT", "EDT", "EDT", "EDT", "EDT", "EDT", "EDT", "EDT"), gmtoff = c(NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_, NA_integer_)), .Names = c("sec", "min", "hour", "mday", "mon", "year", "wday", "yday", "isdst", "zone", "gmtoff"), class = c("POSIXlt", "POSIXt")), Open = c(14, 13, 14, 3, 2, 4, 6, 4, 15, 15, 23, 24, 33, 14, 65, 54, 41, 93, 53), Time = c("00:08:00", "00:07:00", "00:06:00", "00:05:00", "00:04:00", "00:03:00", "00:02:00", "00:01:00", "00:00:00", "23:59:00", "23:58:00", "23:57:00", "23:56:00", "23:55:00", "23:54:00", "23:53:00", "23:52:00", "23:51:00", "23:50:00"), Date = structure(c(16916, 16916, 16916, 16916, 16916, 16916, 16916, 16916, 16916, 16915, 16915, 16915, 16915, 16915, 16915, 16915, 16915, 16915, 16915), class = "Date")), .Names = c("DateTime", "XXX", "Time", "Date"), row.names = c("1371", "1372", "1373", "1374", "1375", "1376", "1377", "1378", "1379", "1380", "1381", "1382", "1383", "1384", "1385", "1386", "1387", "1388", "1389"), class = "data.frame")
DATES <- structure(c(12431, 12432, 10445, 10480, 11487, 12494, 12501, 12508, 13115, 13522, 14529, 15536, 16916, 16935), class = "Date")
SELEC <- DF[DF$Date %in% DATES,]
#Result of subsetting by Date:
# DateTime XXX Time Date
# 1371 2016-04-25 00:08:00 14 00:08:00 2016-04-25
# 1372 2016-04-25 00:07:00 13 00:07:00 2016-04-25
# 1373 2016-04-25 00:06:00 14 00:06:00 2016-04-25
# 1374 2016-04-25 00:05:00 3 00:05:00 2016-04-25
# 1375 2016-04-25 00:04:00 2 00:04:00 2016-04-25
# 1376 2016-04-25 00:03:00 4 00:03:00 2016-04-25
# 1377 2016-04-25 00:02:00 6 00:02:00 2016-04-25
# 1378 2016-04-25 00:01:00 4 00:01:00 2016-04-25
# 1379 2016-04-25 00:00:00 15 00:00:00 2016-04-25
#How the final product would look like if using a larger data base spanning many years:
# DateTime XXX Time Date
#2016-04-25 00:06:00 13 00:06:00 2016-04-25
#2016-04-25 00:05:00 14 00:05:00 2016-04-25
#2016-04-25 00:04:00 3 00:04:00 2016-04-25
#2014-03-11 00:06:00 94 00:06:00 2014-03-11
#2014-03-11 00:05:00 6 00:05:00 2014-03-11
#2014-03-11 00:04:00 14 00:04:00 2014-03-11
#2011-08-06 00:06:00 13 00:06:00 2011-08-06
#2011-08-06 00:05:00 19 00:05:00 2011-08-06
#2011-08-06 00:04:00 41 00:04:00 2011-08-06