R 将时间序列向量长度设置为相等(使用线性插值调整/重缩放它们)
我有一个巨大的时间序列数据集,它被表示为向量(没有可用的时间标签),由于测量过程中的一些错误,它们的长度(如R 将时间序列向量长度设置为相等(使用线性插值调整/重缩放它们),r,datetime,vector,vectorization,R,Datetime,Vector,Vectorization,我有一个巨大的时间序列数据集,它被表示为向量(没有可用的时间标签),由于测量过程中的一些错误,它们的长度(如length()show()中的值)略有不同(~10%),但它们都明确地描述了大约两分钟的时间间隔。我想重新缩放/调整它们的大小,然后计算它们之间的一些统计数据(因此我需要长度相等的时间序列) 我需要快速的方法和线性插值是我的完美选择,因为速度更重要 简单示例,将长度为5的向量重缩放为长度为10的向量: input <- 0:4 # should be rescaled/resize
length()
show()中的值)略有不同(~10%),但它们都明确地描述了大约两分钟的时间间隔。我想重新缩放/调整它们的大小,然后计算它们之间的一些统计数据(因此我需要长度相等的时间序列)
我需要快速的方法和线性插值是我的完美选择,因为速度更重要
简单示例,将长度为5的向量重缩放为长度为10的向量:
input <- 0:4 # should be rescaled/resized into :
output <- c(0, .444, .888, 1.333, 1.777, 2.222, 2.666, 3.111, 3.555, 4)
input我想这就足够了:
resize <- function (input, len) approx(seq_along(input), input, n = len)$y
> resize(0:4, 10)
[1] 0.0000000 0.4444444 0.8888889 1.3333333 1.7777778 2.2222222 2.6666667 3.1111111 3.5555556 4.0000000
> resize( c(0, 3, 2, 1), 10)
[1] 0.000000 1.000000 2.000000 3.000000 2.666667 2.333333 2.000000 1.666667 1.333333 1.000000