DataFrames.jl:定义计数列名时按组计数行

DataFrames.jl:定义计数列名时按组计数行,dataframe,julia,Dataframe,Julia,我正在尝试按组计算数据帧中的行数。以下代码生成一个名为x1的新列,该列包含预期信息: by(df, [:grouping_var_1, :grouping_var_2], nrow) 但是,我不知道如何以一种可以定义除x1以外的名称的方式生成这样的列。到目前为止,我找到的解决方案是: @pipe df |> by(_, [:grouping_var_1, :grouping_var_2], nrow) |> rename(_, :x1 => :my_desired_nam

我正在尝试按组计算数据帧中的行数。以下代码生成一个名为x1的新列,该列包含预期信息:

by(df, [:grouping_var_1, :grouping_var_2], nrow) 

但是,我不知道如何以一种可以定义除x1以外的名称的方式生成这样的列。到目前为止,我找到的解决方案是:

@pipe df |> by(_, [:grouping_var_1, :grouping_var_2], nrow) |> rename(_, :x1 => :my_desired_name);
我是否可以直接执行此操作而不必使用重命名


提前感谢。

请将DataFrames.jl更新为0.21版本

然后使用:

combine(groupby(df, [:grouping_var_1, :grouping_var_2]], nrow => :my_desired_name)
两点意见:

  • by
    已被弃用,建议您不要使用它(如果以
    --depwarn=true
    开头,您可以看到警告)
  • 编写transoformation的一般模式是
    source\u columns=>function=>target\u column\u name
    ,您可以使用缩写
    source\u columns=>function
    ,在这种情况下,目标列的名称会自动生成。一种特殊情况是
    nrow
    (没有任何内容)和
    nrow=>target\u column\u name
    ,对于
    nrow
    ,为了方便起见,您不必传递源列