谁能建议一个从数据框中提取子集的函数?更具体地说:假设我有一个包含 1000 行的数据框。我想创建一个包含 10 行的数据“窗口”并计算当前“窗口”(子集)的标准偏差并将其移动 5 行并为下一个“窗口”执行此操作。因此,我不想跳过任何行,而是希望在“窗口”之间重叠 5 行。谢谢!
问问题
879 次
1 回答
4
您正在rollmean
从 zoo 包中寻找:
例子
> library(zoo)
> x.Date <- as.Date(paste(2004, rep(1:4, 4:1), sample(1:28, 10), sep = "-"))
> set.seed(1)
> x<- zoo(rnorm(12), x.Date) # Creating a time series
> rollmean(x, 5) # obtaining the 5 days rolling mean.
2004-01-10 2004-01-11 2004-02-21 2004-02-27 2004-02-28 2004-03-13
0.1292699 0.3938814 0.3550785 0.1836873 0.2621149 0.1351357
在此示例中,移动窗口为 5,“重叠”长度为 1。
看看,?rollmean
也?rollapply
可以提供帮助。
> rollapply(x, width=5, by=2, mean)
2004-01-10 2004-02-21 2004-02-28
0.1292699 0.3550785 0.2621149
使用rollapply
允许您通过by
参数改变“重叠”长度。请注意,在这种情况下,移动窗口为 5,而“重叠”长度为 2。
于 2013-09-24T09:33:14.370 回答