我有三列的数据帧的:Id
,Date
和Value
,并希望通过平均下采样这样的:取接下来的20行,从这些20行建立的Value
平均并将其添加到一个新的数据帧相同的结构。 Date
应该是20行的第一个值。平均n行
我尝试了这种方式(可能是可怕的:):
resample.downsample <- function(data, by=20)
{
i <- 0
nmax <- nrow(data)
means <- c()
while(i < nmax)
{
means <- c(means, mean(subset(data, Id > i & Id <= i+by)$Value))
i <- i+by
}
return (
data.frame(
Id = seq(1, length.out=(nmax/by), by=1),
Date = seq(startDate, length.out=(nmax/by), by=(1/by)),
Value = means
)
)
}
这工作因此对于小型数据集,但永远运行在我的真实数据集(〜400万行)。任何想法如何优化这个功能?
抽样数据(输入,输出应具有相同的结构,类:整数,数字,POSIXct/POSIXt):
Value Id Date
1 125 1 2011-06-30 22:41:50
2 127 2 2011-06-30 22:41:50
3 126 3 2011-06-30 22:41:50
4 123 4 2011-06-30 22:41:50
5 130 5 2011-06-30 22:41:50
6 131 6 2011-06-30 22:41:50
7 128 7 2011-06-30 22:41:50
您的数据的一个小样本将有所帮助...我不确定日期和ID的格式。 – Seth
@Seth:添加了示例数据:) – Fge