r语言 - 如何在连续几天的固定时间之间对几个月的数据进行子集数据



>我有以下形式的数据:

DateTime          |     Var1
11/01/2016 06:01  |       0 
11/01/2016 06:02  |    0.70 
...
...
11/01/2016 23:59  |   35.08
11/02/2016 00:01  |   33.29
...
11/02/2016 06:00  |   24.62
...
11/30/2016 23:59  |   42.08
12/01/2016 00:01  |   39.79
....

我有~5个月的数据。我必须将数据从 1 天的上午 6:00 到第二天早上 6:00 之前进行子集。一旦我掌握了日期,我就可以使用以下代码对数据进行子集化,但是如何从输入数据中自动获取所有连续的日期呢?

Date1 <- as.integer(as.POSIXct(Date1)) 
Date2 <- as.integer(as.POSIXct(Date2))
subset <- subset(data, as.integer(as.POSIXct(data$txtime)) >= Date1 & as.integer(as.POSIXct(data$txtime)) < Date2)

现在,我可以使用以下代码来获取一个月内的连续日期,但这不适用于该月的最后一天,其中要子集的部分数据是在下个月的第一天。所以我不能在 11 月 30 日上午 6:00 - 12 月 1 日凌晨 5:59 的持续时间内自动执行此操作。此外,代码不是完全自动化的,因为天数(在循环中使用(因月而异。

for (dateofmonth in c(1:29)) {
Date1 <- paste("2016-11-", dateofmonth, ' 06:00:00', sep = '')
Date2 <- paste("2016-11-", (dateofmonth+1), ' 06:00:00', sep = '')
}

可能有一种更简单的方法可以做到这一点,但我无法弄清楚。请指教。

试试这个:

datelist <- split(data, as.Date(as.POSIXct(data$txtime)-21600))

这会将您的时间向后移动 6 小时,然后按日期拆分数据。以便每个子数据帧将包含从该日期的上午 6:00 到第二天的凌晨 5:59 的时间。

最新更新