我有一个符号向量,并且想在 Tidier 的 group_by 宏中使用它们。但是,我假设宏需要一个字符串参数,这就是为什么它不起作用的原因。有没有办法将符号转换为字符串,以便 tidier 可以使用它们。
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
错误是列名:在数据框中找不到groupvars,这是有意义的,因为它将“groupvars”转换为符号。
由于变量是
Tidier
链中未加引号的符号,因此它将 groupvars 视为列名称。
使用
!!
虽然有效
using Tidier
groupvars = [:category, :sub_category, :region]
df_sub =
@chain df begin
@group_by(!!groupvars)
@mutate(sales = sum(sales),
profit = sum(profit),
cogs = sum(cogs),
discount = sum(discount),
gross_profit = sum(gross_profit))
end