R 频率变化不规则时间序列

R 频率变化不规则时间序列,r,time,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

我有一个不规则的时间序列,频率应该是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

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

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

这意味着,如果秒数都不同于00,您将没有数据,但看看您的示例,您似乎需要这些数据。

谢谢您的回答,但我只想知道分钟频率,因此从所有数据中,输出应该正好是整分钟的值“2017-04-01 00:03:00 5.6179”不客气!对不起,我不明白,你能指出时间栏上的错误吗?或者只需要两列,这是错误的吗?但是我已经编辑过了,也许你的意思是。它实际上只是在1分钟的时间间隔内更改了数据的时间步长,并删除了所有其他值,因此新的数据帧应该只有一个值:“2017-04-01 00:03:00 5.6179”编辑过,有点老套,但似乎很合适,让我知道。虽然需要在庞大的数据集上进行检查,但效果非常好
library(dplyr)
library(lubridate)
dat <- df %>%
       filter(second(Time)==0) %>%  # filter only the minutes with 00 seconds
       data.frame()
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