私はScalaを初めて使用するので、リストの固定ウィンドウで移動合計を計算したいと思います。
例:リストの値(1.0、2.0、3.0、6.0、7.0、8.0、12.0、9.0、4.0、1.0)と期間4を指定すると、関数は(1.0、3.0、6.0、12.0、18.0、 24.0、33.0、36.0、33.0、26.0)
list.size <periodの場合、累積合計を返します。
私はいくつかの試みをしました
def mavg(values: List[Double], period: Int): List[Double] = {
if (values.size <= period) (values.sum ) :: List.fill(period -1)(values.sum ) else {
val rest: List[Double] = mavg(values.tail, period)
(rest.head + ((values.head - values(period)))):: rest
}
}
しかし、私は得ました
List(12.0, 18.0, 24.0, 33.0, 36.0, 33.0, 26.0, 26.0, 26.0, 26.0
これは正しくありません。結果を取得するためにPysparkを使用したくありません。誰か助けてもらえますか?
どうもありがとう。
ウィンドウが拡大していることに気づきました(1番目の要素、1番目の2要素、1番目の3要素など)が縮小しません(最後の4要素、最後の3要素、最後の2要素など)。それは意図的ですか?
—
jwvh
sliding
方法を試し