Как извлечь данные временного интервала из минутных данных в r - PullRequest
0 голосов
/ 18 декабря 2018

Я пытаюсь извлечь строки с 5-минутными интервалами из 1-минутных данных.Мои данные выглядят так:

structure(list(Date = structure(c(1509408000, 1509408000, 1509408000, 
1509408000, 1509408000, 1509408000), class = c("POSIXct", "POSIXt"
), tzone = "UTC"), Time = structure(c(-2209021500, -2209021560, 
-2209021620, -2209021680, -2209021740, -2209021800), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), O = c(3674, 3675, 3674, 3675, 3675, 
3675), H = c(3674, 3675, 3675, 3676, 3676, 3675), L = c(3673, 
3674, 3674, 3674, 3675, 3675), C = c(3673, 3674, 3674, 3675, 
3675, 3675)), row.names = c(NA, -6L), class = c("tbl_df", "tbl", 
"data.frame"))

structure(list(Date = structure(c(1506902400, 1506902400, 1506902400, 
1506902400, 1506902400, 1506902400), class = c("POSIXct", "POSIXt"
), tzone = "UTC"), Time = structure(c(-2209071300, -2209071360, 
-2209071420, -2209071480, -2209071540, -2209071600), class = c("POSIXct", 
"POSIXt"), tzone = "UTC"), O = c(3450, 3451, 3451, 3452, 3450, 
3449), H = c(3451, 3451, 3451, 3452, 3452, 3451), L = c(3448, 
3449, 3449, 3450, 3450, 3449), C = c(3448, 3451, 3450, 3451, 
3452, 3450)), row.names = c(NA, -6L), class = c("tbl_df", "tbl", 
"data.frame"))

Я смотрел на:

Создать 15-минутный интервал времени из данных за минуту в R?

Как установить и извлечь временные ряды по временному интервалу в строке

, но никто не делает именно то, что я хочу.Возможно, я мог бы использовать это: substr(t,15,16)=="00".

, но я не уверен, как объединить это с filter.

Желаемый результат: поиск строк с 30-минутными интервалами:

Desired Output: find rows at 30 minute intervals:

1 Ответ

0 голосов
/ 18 декабря 2018

Вы можете извлечь строки с минутной меткой, заканчивающейся 0 или 5, с помощью

df[substr(format(df$Time, '%M'), 2, 2) %in% c(0, 5),]
# or 
df[as.numeric(format(df$Time, '%M')) %% 5 == 0,]
# or 
df[grep('[0|5]$', format(df$Time, '%M')),]

С filter:

library(dplyr)
df %>% 
  filter(substr(format(df$Time, '%M'), 2, 2) %in% c(0, 5))

# or 

df %>% 
  filter(as.numeric(format(df$Time, '%M')) %% 5 == 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...