如何在定义计数列名称时按组对行进行计数?

问题描述 投票:0回答:1

我正在尝试按组计算数据帧中的行数。以下代码生成一个名为 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);

我是否可以直接执行此操作而无需使用重命名?

提前致谢。

dataframe julia
1个回答
9
投票

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

然后使用:

combine(groupby(df, [:grouping_var_1, :grouping_var_2]), nrow => :my_desired_name)

两条评论:

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