频率变化不规则时间序列

时间:2018-11-27 16:15:14

标签: r time

我有一个不规则的时间序列,其频率应为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 :(得分:1)

如果您不想舍入,而只删除秒,这可能会有所帮助,同时删除无用的列:

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不同,那么您将没有数据,但是从您的示例来看,您似乎需要它。