Julia 朱莉娅:如何在DataFrames.jl中用一个函数创建多个列
假设我有一个专栏Julia 朱莉娅:如何在DataFrames.jl中用一个函数创建多个列,julia,Julia,假设我有一个专栏 using DataFrames df = DataFrame(var = "methodA_mean") 我想通过提取A和mean var来创建两个新列,如下所示 3×3 DataFrame │ Row │ var │ ab │ stat │ │ │ String │ String │ String │ ├─────┼──────────────┼────────┼────────┤ │ 1 │ m
using DataFrames
df = DataFrame(var = "methodA_mean")
我想通过提取A和mean var来创建两个新列,如下所示
3×3 DataFrame
│ Row │ var │ ab │ stat │
│ │ String │ String │ String │
├─────┼──────────────┼────────┼────────┤
│ 1 │ methodA_mean │ A │ mean │
│ 2 │ methodB_var │ B │ var │
│ 3 │ methodA_var │ A │ var │
我可以编写一个正则表达式,从var
列中提取“a”或“B”以及“mean”和“var”。但是我如何优雅地输出到多个列中呢
我尝试了下面的方法,效果不错,但我觉得应该有更优雅的方法来创建多个列
tmp = match.(r"method(?<ab>A|B)_(?<stat>mean|var)", df.var)
df.ab = getindex.(tmp, :ab)
df.stat = getindex.(tmp, :st)
我不确定您在代码的哪一部分寻求改进,因为我觉得这很正常,但您可以这样写:
julia> insertcols!(df, :ab => last.(first.(df.var, 7), 1), :stat => chop.(df.var, head=8, tail=0))
3×3 DataFrame
│ Row │ var │ ab │ stat │
│ │ String │ String │ SubStri… │
├─────┼──────────────┼────────┼──────────┤
│ 1 │ methodA_mean │ A │ mean │
│ 2 │ methodB_var │ B │ var │
│ 3 │ methodA_var │ A │ var │
我想这个问题可能更适合你,但我不确定。
3×3 DataFrame
│ Row │ var │ ab │ stat │
│ │ String │ SubStri… │ SubStri… │
├─────┼──────────────┼──────────┼──────────┤
│ 1 │ methodA_mean │ A │ mean │
│ 2 │ methodB_var │ B │ var │
│ 3 │ methodA_var │ A │ var │
julia> insertcols!(df, :ab => last.(first.(df.var, 7), 1), :stat => chop.(df.var, head=8, tail=0))
3×3 DataFrame
│ Row │ var │ ab │ stat │
│ │ String │ String │ SubStri… │
├─────┼──────────────┼────────┼──────────┤
│ 1 │ methodA_mean │ A │ mean │
│ 2 │ methodB_var │ B │ var │
│ 3 │ methodA_var │ A │ var │