所以我使用的是Indicators包和sma函数。sma功能的设置如下:
function sma(x::Array{Float64}; n::Int64=10)::Array{Float64}
return runmean(x, n=n, cumulative=false)
end
它的输入是一个数组{Float64}。
因此,我将数据加载到df中,类型如下:
julia> showcols(df)
6258Ã7 DataFrames.DataFrame
â Col
âââââââââ¼ââââââââââââ¼ââââââââââ¼ââââââââââ¤
â 1 â Date â Date â 0 â
â 2 â Open â Float64 â 0 â
â 3 â High â Float64 â 0 â
â 4 â Low â Float64 â 0 â
â 5 â Close â Float64 â 0 â
â 6 â Adj_Close â Float64 â 0 â
â 7 â Volume â Int64 â 0 â
然后,我尝试直接在数据框列上运行sma函数,如下所示:
df[:Close_200sma] = sma(df[:Close],n=200)
它返回报告:
MethodError: no method matching sma(::DataArrays.DataArray{Float64,1}; n=200
我知道类型是:
6258-element DataArrays.DataArray{Float64,1}
DataArrays是一种允许缺失值的数据结构,因此我在这里阅读:
https://github.com/JuliaStats/DataArrays.jl
我导入了以下数据:
df = readtable("SPY.csv", header=true)
所以不确定它是如何转换为数据的。数组结构。
当我将数据帧列拉入向量并将convert()用于数组时:
Close = Float64[]
Close = vec(df[:Close])
6258-element DataArrays.DataArray{Float64,1}
Close = convert(Array, Close)
我可以通过sma函数很好地运行它:
sma(Close,n=200)
当我检查showcols(df)时
朱莉娅>showcols(df)
62587数据帧。数据帧
–Col–Name–Eltype–Missing–缺少
·
1日期日期0
–2–开放–浮动64–0–0
–3–高–浮动64–0–0
4低浮动64 0
–5–关闭–浮动64–0–0
–6–调整关闭–浮动64–0–0
7卷Int64 0
eltype为Float64。因为它被包装到datarray结构中,所以我无法将其传递给SMA函数,该函数仅为Float64设置。
我说它不工作是因为datarray结构,以及为什么我不能让它直接工作到数据帧中,对吗?
我使用read时,这个电话工作正常。CSV(),但它开始抛出空错误并覆盖其他文件。所以我暂时放弃了CSV包。
dt = CSV.read("SPY.csv", types=[String; fill(Float64, 5); Int])
在这里,我能够指定类型,并且能够将df列运行到sma()函数。