我有一个向量
using Missings
v = allowmissing(rand(100))
v[rand(100) .< 0.1] .= missing
最好的填充方式是什么v
与最后一个非缺失值?
现在
for (i, val) in enumerate(v)
ismissing(val) && (i >=2) && (v[i]=v[i-1])
end
first_non_missing = findfirst(x->!ismissing(x), v)
if first_non_missing >= 2
v[1:first_non_missing -1] .= v[first_non_missing]
end
v = disallowmissing(v)
但我发现对于大向量来说它很慢。用以前的非缺失值填充缺失值的优雅而有效的方法是什么?
一个简单快速的解决方案:
replace_missing!(v) = accumulate!((n0,n1) -> ismissing(n1) ? n0 : n1, v, v, init=zero(eltype(v)))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)