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 的数量。
听起来您正在寻找类似的东西:
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)