将缺失的数组转换为NaN

时间:2018-04-11 14:02:17

标签: arrays julia missing-data

让我们举一个使用ShiftedArrays包lag()函数的例子。 我将数组o与数组c进行比较。如果o小于滞后(c,1)则说真,假。

# dummy data
o = collect(5.0:1.0:14)
c = collect(1.0:1.0:10)
# lag
using ShiftedArrays
o_c_lag1 = o .< lag(c,1)

输出:

print(o_c_lag1)
Any[missing, false, false, false, false, false, false, false, false, false]

我的问题在这里。在将缺失转换为NaN和输出类型的Float64时,是否有一种有效的方法可以进行o和c bool比较?

我输出的类型是Any。我想写快速代码。所以我希望它是Float64。

如果我做一个NaN:

nan = [NaN]
1-element Array{Float64,1}:
 NaN

我将编写这一行代码的数千种变体:

o_c_lag1 = o .< lag(c,1)

有没有办法可以将一行中的Missing类型转换为NaN?所以我可以输出Float64?

更改数千个阵列会很麻烦。

**编辑

也许我可以将所有数组存储在R等效列表()中。并迭代所有数组,将所有缺失更改为NaN并转换为类型Float64。

1 个答案:

答案 0 :(得分:2)

我不熟悉ShiftedArrays套餐,但您可以执行以下操作:

julia> o_c_lag1
10-element Array{Any,1}:
      missing
 false
 false
 false
 false
 false
 false
 false
 false
 false

julia> Float64.(collect(Missings.replace(o_c_lag1, NaN)))
10-element Array{Float64,1}:
 NaN
   0.0
   0.0
   0.0
   0.0
   0.0
   0.0
   0.0
   0.0
   0.0

您可以使用Missings.replacemissing更改为NaN,然后只需将收集的数组转换为Float64 s。