Изменение частоты нерегулярных временных рядов - PullRequest
0 голосов
/ 27 ноября 2018

У меня нерегулярный временной ряд, где частота должна быть 2 секунды, но иногда это 4 секунды.Когда я пытаюсь изменить шаг по времени в минутах, у меня появляется ошибка ... желаемый результат должен быть

"2017-04-01 00:03:00 5.6179"

Должна отображаться только полная минута, но вместо этого я получил два значения

DateTime<-c("2017-04-01 00:02:38 CEST", "2017-04-01 00:02:40 CEST","2017-04-01 00:02:42 CEST",
   "2017-04-01 00:02:46 CEST","2017-04-01 00:02:48 CEST" ,"2017-04-01 00:02:50 CEST" ,
   "2017-04-01 00:02:52 CEST","2017-04-01 00:02:54 CEST","2017-04-01 00:02:56 CEST" ,
   "2017-04-01 00:02:58 CEST","2017-04-01 00:03:00 CEST", "2017-04-01 00:03:02 CEST")

Time<-as.POSIXct(DateTime)
set.seed(1)
Values<-runif(12,5,8)
df<-data.frame(Time, Values)
library(xts)
dfSeconds <- xts(df[,2], order.by=as.POSIXct(df[,1], format='%y/%m/%d %H:%M:  %S'))
dfMinutes<-to.minutes(dfSeconds,OHLC=FALSE,indexAt="startof")
dfMinutes
                    [,1]
2017-04-01 00:02:58 6.692016
2017-04-01 00:03:02 7.518400

Не уверен, как решить проблему в огромном фрейме данных.

1 Ответ

0 голосов
/ 28 ноября 2018

Если вы не хотите округлять, а только удалять секунды, это может помочь, убрав также бесполезный столбец:

df$Time <- floor_date(df$Time,unit ="minute")

Но если вы хотите, чтобы в строке была только строка с минутой, выможно попробовать это:

library(dplyr)
library(lubridate)
dat <- df %>%
       filter(second(Time)==0) %>%  # filter only the minutes with 00 seconds
       data.frame()

Затем преобразовать в xts объект:

library(xts)
xts(dat[,2], order.by=as.POSIXct(dat[,1], format='%y/%m/%d %H:%M:%S'))
                        [,1]
2017-04-01 00:03:00 5.617924

Это означает, что у вас не будет данных, если все секунды отличаются от 00, ноглядя на ваш пример, кажется, что вам это нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...