You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Julia Tidier的@group_by宏中使用符号向量分组?

解决Tidier.jl中符号向量作为分组列的问题

错误原因

你遇到的“列名:groupvars未找到”错误,是因为@group_by宏会直接把传入的groupvars当作列名符号处理,而不会解析这个变量内部存储的符号向量,所以它会去寻找名为:groupvars的列,自然找不到。

解决方法

你不需要把符号转成字符串,只需要把符号向量展开成宏可识别的单个列名参数,有两种常用方式:

方式1:使用!!! splatting操作符(推荐)

Tidier.jl原生支持用!!!展开符号/字符串向量,直接作为宏的列名参数:

groupvars = [:category, :sub_category, :region]
df_sub = @chain df begin
            Tidier.@group_by(!!!groupvars) 
            Tidier.@mutate(sales = sum(sales), 
                    profit = sum(profit), 
                    cogs = sum(cogs), 
                    discount = sum(discount), 
                    gross_profit = sum(gross_profit))
         end

方式2:使用宏插值$配合...展开

利用Julia的宏插值语法,把向量元素逐个展开:

groupvars = [:category, :sub_category, :region]
df_sub = @chain df begin
            Tidier.@group_by($(groupvars...)...) 
            Tidier.@mutate(sales = sum(sales), 
                    profit = sum(profit), 
                    cogs = sum(cogs), 
                    discount = sum(discount), 
                    gross_profit = sum(gross_profit))
         end

两种方式本质都是把[:a, :b, :c]转换成:a, :b, :c的形式传递给@group_by,让宏正确识别分组列。

内容的提问来源于stack exchange,提问作者rwdvc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 15:27:14