Я хотел бы преобразовать каждый элемент в столбце в Julia DataFrames.DataFrame, но при этом пропустить пропущенные значения (пусть они остаются в таблице без изменений).
В качестве простого примера, мы могли бы сделать это следующим образом:
using DataFrames, DataFramesMeta
@linq DataFrame(mode=[1,2,missing]) |>
transform(
mode = map(x->(if x === missing missing elseif x in ([0:5...]) x+1 else missing end), :mode)
)
Но это выглядит более или менее загроможденным. Будут ли более элегантные или лаконичные способы?
Я прочитал документы Query.jl и DataFramesMeta.jl в надежде найти метод, с помощью которого мне не придется кодировать, пропуская пропущенные значения явно.
EDIT:
Я думаю, что следующее - лучшее, что я могу придумать:
using DataFrames, DataFramesMeta, DataValues
skipmap(f, c) = map(x->(if x===missing missing else f(x) end), c)
@linq DataFrame(mode=[1,2,missing]) |>
transform(
mode = skipmap(x->if x in ([0:5...]) x+1 else x end, :mode)
)
Я думаю, было бы здорово, если бы map () расширялся таким образом, чтобы он принимал третий параметр y (следовательно, map (f, c, y)), и сохранял бы эти элементы в массиве без изменений, если они принадлежат y.