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

int*_*o_r 6 dataframe julia

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

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

Run Code Online (Sandbox Code Playgroud)

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

@pipe df |> by(_, [:grouping_var_1, :grouping_var_2], nrow) |> rename(_, :x1 => :my_desired_name);
Run Code Online (Sandbox Code Playgroud)

无论如何,我可以直接执行此操作,而不必使用 rename 吗?

提前致谢。

Bog*_*ski 9

请将DataFrames.jl更新至0.21版本。

然后使用:

combine(groupby(df, [:grouping_var_1, :grouping_var_2]], nrow => :my_desired_name)
Run Code Online (Sandbox Code Playgroud)

两条评论:

  • by已弃用,建议您不要使用它(如果使用 启动 Julia,您可以看到警告--depwarn=true
  • 编写转换的一般模式是source_columns => function => target_column_name,您可以使用简写source_columns => function,在这种情况下,目标列的名称会自动生成。一个特殊情况是nrow(没有任何内容) 和nrow => target_column_name,因为nrow为了方便起见,您不必传递源列