我有一个不规则的时间序列,其频率应为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
不确定如何在庞大的数据框中解决问题。
答案 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不同,那么您将没有数据,但是从您的示例来看,您似乎需要它。