如何将另一列的简单移动平均列添加到Julia数据框中

时间:2015-12-22 00:31:59

标签: dataframe julia

我有一个Julia数据框,其中一列被称为'close',我想在数据框中添加另一个名为'sma'的列,这是一个简单的'close'移动平均线。感谢任何可以提供帮助的人!

我注意到代码amrod中存在问题。它没有考虑到SMA的第一长度,该SMA没有足够的先前数据点用于良好的SMA,并且还提供了要求的SMA的两倍。我把它更改为输入零到那一点,当我弄清楚它是如何工作时我也改变了变量名。

function makeSMA(data, SMA)
    len = length(data)
    y = Vector{Float64}(len)
    for i in 1:SMA-1
        y[i] = NaN
    end
    for i in SMA:len
        y[i] = mean(data[i-(SMA-1):i])
    end
    return y
end

1 个答案:

答案 0 :(得分:2)

检查一下:

function ma{T <: Real}(x::Vector{T}, wind::Int)
    len = length(x)
    y = Vector{Float64}(len)
    for i in 1:len
        lo = max(1, i - wind)
        hi = min(len, i + wind)
        y[i] = mean(x[lo:hi])
    end
    return y
end

x = collect(1:100)
y = ma(x, 4)

然后你可以hcat(x, y)

编辑: 如果你想要一个向后看的MA,你可以使用像

这样的东西
function ma{T <: Real}(x::Vector{T}, wind::Int)
    len = length(x)
    y = Vector{Float64}(len)
    for i in 1:len
        if i < wind
            y[i] = NaN
        else
            y[i] = mean(x[i - wind + 1:i])
        end
    end
    return y
end