R:汇总时间序列数据返回NA

时间:2016-08-28 11:50:33

标签: r xts

我试图通过使用xts:

以5分钟的方式对数据进行聚合
library(xts)
data <- read.csv("C:/Users/User/Documents/data.csv")
times <- data$Time
X <- as.POSIXct(times)
X <- as.xts(X)
DataTable <- period.apply(X, endpoints(X, "minutes", 5), mean)

问题是,如果打印出“DataTable”,则表明聚合不起作用,聚合分数为空(NA)。

2016-08-28 21:26:32   NA
2016-08-28 21:29:05   NA
2016-08-28 21:30:57   NA
2016-08-28 21:34:31   NA
2016-08-28 21:35:22   NA
2016-08-28 21:37:31   NA
2016-08-28 21:40:15   NA
2016-08-28 21:43:59   NA
2016-08-28 21:48:01   NA
2016-08-28 21:48:58   NA
2016-08-28 21:49:14   NA
2016-08-28 22:40:45   NA
2016-08-28 23:40:45   NA

这是输入文件:https://www.dropbox.com/s/epkbk770ajksqnb/data.csv?dl=0

有人知道我做错了什么吗?

2 个答案:

答案 0 :(得分:1)

问题在于您将X作为参数进行聚合而不是数字字段(例如T1T2)。

   library(xts)
    mydata    <- read.csv("data.csv")
    times     <- mydata$Time
    X         <- as.POSIXct(times)
    X         <- as.xts(X)
    period.apply(mydata$T1, INDEX = endpoints(X, "minutes", 5), function(x) mean(x, na.rm=T))

答案 1 :(得分:0)

问题是你的xts对象没有任何数据,因为你只创建了几次。您的第一个代码块相当于:

library(xts)
data <- read.csv("C:/Users/User/Documents/data.csv")
X <- as.xts(as.POSIXct(data$Time))

如果使用数据创建xts对象,则period.apply调用可以正常工作。

X <- as.xts(read.zoo("C:/Users/User/Documents/data.csv", sep=",", header=TRUE))
DataTable <- period.apply(X, endpoints(X, "minutes", 5), mean)