【发布时间】:2018-04-06 15:06:29
【问题描述】:
我正在尝试为我的数据框中的特定列创建滞后 +1。
我的数据是这样的:
julia> head(df)
6×9 DataFrames.DataFrame. Omitted printing of 1 columns
│ Row │ Date │ Open │ High │ Low │ Close │ Adj Close │ Volume │ Close_200sma │
├─────┼────────────┼─────────┼─────────┼─────────┼─────────┼───────────┼─────────┼──────────────┤
│ 1 │ 1993-02-02 │ 43.9687 │ 43.9687 │ 43.75 │ 43.9375 │ 27.6073 │ 1003200 │ NaN │
│ 2 │ 1993-02-03 │ 43.9687 │ 44.25 │ 43.9687 │ 44.25 │ 27.8036 │ 480500 │ NaN │
│ 3 │ 1993-02-04 │ 44.2187 │ 44.375 │ 44.125 │ 44.3437 │ 27.8625 │ 201300 │ NaN │
│ 4 │ 1993-02-05 │ 44.4062 │ 44.8437 │ 44.375 │ 44.8125 │ 28.1571 │ 529400 │ NaN │
│ 5 │ 1993-02-08 │ 44.9687 │ 45.0937 │ 44.4687 │ 45.0 │ 28.2749 │ 531500 │ NaN │
│ 6 │ 1993-02-09 │ 44.9687 │ 45.0625 │ 44.7187 │ 44.9687 │ 28.2552 │ 492100 │ NaN
│
所以这是我落后的尝试,在 R 中,我可以表示 NA, 1,然后将其附加到子集数据的前面。这是我的朱莉娅:
# Lag data +1 forward
lag = df[1:nrow(df)-1,[:Long]] # shorten vector by 1 (remove last element)
v = Float64[]
v = vec(convert(Array, lag)) # convert df column to vector
z = fill(NaN, 1) # rep NaN, 1 time (add this to front) to push all forward +1
lags = Float64[]
lags= vec[z; [v]] # join both arrays z=NA first , make vector same nrow(df)
当我加入 NaN 和我的数组时,我的长度(滞后)为 2。 数据一分为二:
julia> length(lags[2])
6255
我在访问第二部分时看到了更长的长度。
如果我以另一种方式加入,NaN 在最后,数字在前。我得到正确的长度:
# try joining other way
lags_flip = [v; [z]]
julia> length(lags_flip)
6256
我也可以将它添加回我的数据框:(Nan 在底部,我想要在前面)
# add back to data frame
df[:add] = lags_flip
1
1
1
1
1
1
1
1
[NaN]
我的问题是当加入 Nan 时,我的数据如下: lags_flip = [v; [z]]
我得到正确的长度,当我用另一种方式做时:
南先:
滞后= [z; [v]]
然后它看起来不正确。
如何通过数据 +1 向前偏移,将 Nan 放在前面并添加回我的 df?我觉得我很亲近但缺少一些东西
【问题讨论】:
标签: julia