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

如何在dplyr中按行统计最大值在指定列的重复次数?

问题描述

现有如下表格:

col1col2col3col4
1214
5663

需要完成两个任务:

  • 计算每行的最大值
  • 统计该最大值在当前行的重复次数

期望得到的结果表如下:

col1col2col3col4max_valrepetition
121441
566362

目前已通过以下代码实现每行最大值的计算:

df %>% rowwise() %>%
  mutate(max_val = max(col1:col4))

但在统计最大值重复次数时遇到阻碍,思路是通过sum(当前行指定列 == max_val)实现,但不清楚在dplyr中如何选择当前行的指定列进行判断。

解决方法

可以在mutate中结合c_across()函数实现需求,c_across()是dplyr中专门用于rowwise()上下文里提取当前行指定列值的函数,能将列值转换为向量供后续判断。

完整代码如下:

library(dplyr)

df %>%
  rowwise() %>%
  mutate(
    max_val = max(col1:col4),
    repetition = sum(c_across(col1:col4) == max_val)
  ) %>%
  ungroup() # 完成逐行操作后取消分组,避免影响后续处理

代码说明

  • c_across(col1:col4):在逐行处理的上下文中,提取当前行col1到col4的所有值组成向量
  • sum(c_across(...) == max_val):将向量中的每个元素与当前行的最大值比较,得到逻辑向量后求和,结果即为最大值的重复次数
  • ungroup():取消行分组状态,因为rowwise()会改变数据框的分组属性,后续操作若无需逐行处理,建议执行此步骤

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:25:19