如何从R中的数据帧中提取具有重叠的子集

时间:2013-09-24 09:26:22

标签: r

任何人都可以建议从数据框中提取子集的功能吗? 更具体:假设我有一个1000行的数据框。我想创建一个包含10行的数据“窗口”并计算当前“窗口”(子集)的标准偏差,并将其进一步移动5行并为下一个“窗口”执行此操作。所以,我不想跳过任何行,而不是它我想在“窗口”之间重叠5行。 谢谢!

1 个答案:

答案 0 :(得分:4)

您正在寻找动物园套餐中的rollmean

实施例

> 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。