gpt4 book ai didi

r - 使用 R 中的 data.table 的向量的简单移动平均(部分窗口)

转载 作者:行者123 更新时间:2023-12-02 16:20:38 25 4
gpt4 key购买 nike

我有一个简单的向量如下:

x = c(14.24, 13.82, 12.75, 12.92, 12.94, 13.00, 14.14, 16.28, 20.64, 17.64)

我试图找到这个向量的滚动平均值并使用以下函数:

library(data.table)
y = frollmean(x, 5)

我得到的结果如下 -

 [1]     NA     NA     NA     NA 13.334 13.086 13.150 13.856 15.400 16.340

但是,我想要的结果是 -

 [1]     14.24 14.03 13.06 13.43 13.334 13.086 13.150 13.856 15.400 16.340
  1. 第一个值应与原始向量中的值相同
  2. 第二个值应该是第一个和第二个值的平均值
  3. 第三个值应该是前三个值的平均值矢量
  4. 第四个值应该是向量中前四个值的平均值

其余的计算由函数 frollmean 正确处理

任何建议都会有所帮助。

谢谢!

最佳答案

在您的 frollmean 函数调用中,您要求宽度为 5 的窗口。由于没有足够的元素,因此无法计算此窗口宽度的所有 NA 前导元素。 ?frollmean 中介绍了部分窗口支持手动示例。以下是根据您的案例改编的代码。

x = c(14.24, 13.82, 12.75, 12.92, 12.94, 13.00, 14.14, 16.28, 20.64, 17.64)
library(data.table)
an = function(n, len) c(seq.int(n), rep(n, len-n))
y = frollmean(x, an(5, length(x)), adaptive=TRUE)
y
# [1] 14.24000 14.03000 13.60333 13.43250 13.33400 13.08600 13.15000 13.85600 15.40000 16.34000

参数 adaptive 是更通用的(不仅仅是逻辑 partial)自定义窗口宽度的方法。这里我们使用辅助函数 an 来计算窗口的自适应长度。如果您只调用 an,您会发现窗口宽度现在正是您预期的宽度,而不是 5:

an(5, length(x))
# [1] 1 2 3 4 5 5 5 5 5 5

关于r - 使用 R 中的 data.table 的向量的简单移动平均(部分窗口),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65596100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com