在Julia中实现类似R的lag功能:为数据框列创建+1超前移位
在Julia DataFrames中实现+1超前移位(类似R的lag功能)
嘿,我来帮你搞定这个问题!在Julia的DataFrames里要实现类似R中lag()的超前移位(其实准确说R里的超前对应lead(),不过我懂你的需求:把下一行的值放到当前行的新列里),有两种简单好用的方法:
方法一:用DataFrames内置的lead()函数(推荐)
DataFrames.jl自带了lead()函数,专门用来获取后续行的数值,正好对应你要的+1超前移位。步骤很简单:
首先确保你加载了DataFrames包:
using DataFrames
然后用transform()函数添加新列,这里我们把新列命名为Close_next(你可以改成自己喜欢的名字):
df = transform(df, :Close => lead => :Close_next)
执行完之后,df里就会多出一列Close_next,每一行的值都是下一行的Close值,最后一行因为没有下一行,会填充为missing(如果需要转成NaN的话,可以用coalesce.(df.Close_next, NaN)来转换)。
方法二:手动索引实现(更直观)
如果你想更清楚看到移位的逻辑,也可以直接通过数组索引来实现:
# 把第2行到最后一行的Close值取出来,最后补一个missing df[!, :Close_next] = vcat(df[2:end, :Close], [missing])
这个方法和第一种效果完全一样,只是用了更基础的数组操作,适合理解原理。
举个对应你数据的小例子:
你的第一行Close是43.9375,第二行是44.25,那生成的Close_next第一行就是44.25,第二行则是第三行的Close值,以此类推。
内容的提问来源于stack exchange,提问作者Andrew Bannerman
相关产品推荐
相关产品推荐

