Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在R中动物园时间序列上移动窗口_R_Zoo - Fatal编程技术网

在R中动物园时间序列上移动窗口

在R中动物园时间序列上移动窗口,r,zoo,R,Zoo,我在将移动窗口函数应用于时间序列数据集时遇到问题。我已将每日流量数据(日期和值)导入到zoo对象中,如下所示: library(zoo) df <- data.frame(sf = c("2001-04-01", "2001-04-02", "2001-04-03", "2001-04-04", "2001-04-05", "2001-04-06", "2001-04-07", "2001-06-01",

我在将移动窗口函数应用于时间序列数据集时遇到问题。我已将每日流量数据(日期和值)导入到zoo对象中,如下所示:

library(zoo)
df <-  data.frame(sf = c("2001-04-01", "2001-04-02", "2001-04-03", "2001-04-04", 
                         "2001-04-05", "2001-04-06", "2001-04-07", "2001-06-01", 
                         "2001-06-02", "2001-06-03", "2001-06-04", "2001-06-05", 
                         "2001-06-06"), 
                      cfs = abs(rnorm(13)))
zoodf <- read.zoo(df, format = "%Y-%m-%d")
这会立即返回一条错误消息:

Error in zoo(df, ix[!is.na(ix)]) : 
  “x” : attempt to define invalid zoo object

问题似乎在于,每个月的数据点数量不相等,因为使用相同的数据帧并为6月添加一个额外的日期会导致正确的响应。任何关于如何处理此问题的建议都将不胜感激

好吧,你可能会想到这样的事情。它将每个月的结果粘贴到一个数据点,以便可以在聚合函数中返回。否则,您还可以查看
?aggregate.zoo
,了解一些更精确的数据操作

f.3daylow <- function(x){paste(rollapply(x, 3, FUN=min, 
               align = "center"),  collapse=", ")}

data <- aggregate(zoodf, by=as.yearmon, FUN=f.3daylow)

最终,您可以通过strsplit(数据[1],“,”)再次切割它,但有关更多详细信息,请参阅。

您希望它输出什么?目前,它在年+月组合中使用函数,并对该集合中的所有元素执行该函数,并为每个集合输出一个值。如果您只需要最小值,则不需要复杂的rollapply函数。对于每个月,应该有多个值对应于每个3天移动窗口最小值的结果;i、 e.,2001年4月0.1 0.1 0.2。。。;2001年5月0.20.10.3。。。
Error in zoo(df, ix[!is.na(ix)]) : 
  “x” : attempt to define invalid zoo object
f.3daylow <- function(x){paste(rollapply(x, 3, FUN=min, 
               align = "center"),  collapse=", ")}

data <- aggregate(zoodf, by=as.yearmon, FUN=f.3daylow)
Apr 2001 
0.124581285281643, 0.124581285281643, 0.124581285281643,
0.342222172241979, 0.518874882033892 
June 2001 
0.454158221843514, 0.454158221843514, 0.656966528249837,
0.513613009234435