Julia中与R tidyr包separate()功能等价的函数是什么
Julia中等价于R tidyr::separate()的实现方案
Julia生态中有多种实现列拆分的方案,完全可以覆盖separate()的功能,针对你需要用冒号拆分单列成8个新列的需求,推荐以下两种常用实现方式:
方案1:原生DataFrames生态实现(无额外语法依赖)
你只需要用到DataFrames.jl和SplitApplyCombine.jl即可完成需求,示例代码如下:
using DataFrames, SplitApplyCombine # 假设你的数据集为df,待拆分列名为raw_col,拆分后列名为col1~col8 # 写法1:直接给新列赋值 df[!, [:col1, :col2, :col3, :col4, :col5, :col6, :col7, :col8]] = split.(df.raw_col, ":") # 写法2:用transform方法,支持同步删除原列 df = transform( df, :raw_col => ByRow(x -> split(x, ":")) => [:col1, :col2, :col3, :col4, :col5, :col6, :col7, :col8], dropcols=:raw_col )
注意:如果需要限制拆分次数、避免多余的分隔符拆分结果,可以给
split传入limit=8参数,所有超过8段的内容都会合并到最后一列中。如果需要将拆分后的列转换为数值类型,只需要在split后加parse.(Int, ...)即可。
方案2:类tidyr语法实现(用法和R完全一致)
如果你熟悉R tidyr的语法,可以使用Tidier.jl包,它内置了完全同名的separate函数,用法和R端几乎没有差异:
using Tidier df = @chain df begin separate(raw_col, into = [:col1, :col2, :col3, :col4, :col5, :col6, :col7, :col8], sep = ":") end
内容的提问来源于stack exchange,提问作者jean10
相关产品推荐
相关产品推荐

