将向量中的值插值/拉伸到指定长度

mex*_*ood 5 interpolation r data-manipulation data-processing data-cleaning

我有不同长度的向量例如,

a1 = c(1,2,3,4,5,6,7,8,9,10) a2 = c(1,3,4,5) a3 = c(1,2,5,6,9)

我想将 a2 和 a3 拉伸到 a1 的长度,因此我可以对其运行一些要求向量长度相同的算法。我会将 a1 截断为与 a2 和 a3 相同,但最终会丢失有价值的数据。

即也许 a2 可能看起来像 1 1 1 3 3 3 4 4 5 5 ?

任何建议都会很棒!谢谢

编辑:我需要它适用于具有重复值的向量,例如 c(1,1,2,2,2,2,3,3) 和延伸值来表示原始向量中重复值的数量,例如,如果我将示例向量拉伸到 100 的长度,我会期望 2 的数量多于 1 的数量。

A5C*_*2T1 4

听起来您正在寻找类似的东西:

lengthen <- function(vec, length) {
  vec[sort(rep(seq_along(vec), length.out = length))]
}

lengthen(a2, length(a1))
# [1] 1 1 1 3 3 3 4 4 5 5
lengthen(a3, length(a1))
# [1] 1 1 2 2 5 5 6 6 9 9
lengthen(a4, length(a1))
# [1] 5 5 5 1 1 1 3 3 4 4
lengthen(a5, length(a1))
# [1] 1 1 1 1 1 1 4 4 5 5
Run Code Online (Sandbox Code Playgroud)

在哪里:

a1 = c(1,2,3,4,5,6,7,8,9,10)
a2 = c(1,3,4,5)
a3 = c(1,2,5,6,9)
a4 = c(5,1,3,4)
a5 = c(1,1,4,5)
Run Code Online (Sandbox Code Playgroud)