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

在R中按分组计算多列中出现频率最高的因子水平

解决方案

可以通过分组后转长格式的思路实现需求,替代直接用across的方式,具体代码如下:

首先加载所需工具包:

library(dplyr)
library(tidyr)

然后处理目标数据:

df %>%
  group_by(temperature) %>%
  # 将非分组列转成长格式,同时过滤NA值
  pivot_longer(cols = -temperature, values_drop_na = TRUE) %>%
  # 统计分组内各值的出现次数
  count(value, name = "occurrences") %>%
  # 提取分组内出现次数最多的记录
  slice_max(n = 1, order_by = occurrences) %>%
  # 调整列名与顺序
  rename(most_common = value) %>%
  select(temperature, most_common, occurrences)

运行后会输出你期望的结果:

temperaturemost_commonoccurrences
1apple3
2dodo4
3banana2

代码说明

  • group_by(temperature):按温度分组处理数据
  • pivot_longer(...):把每组的var1/var2/var3列合并为单列,同时自动过滤NA值,避免统计无效数据
  • count(value, name = "occurrences"):统计每个值在当前分组内的出现频次,并重命名频次列为occurrences
  • slice_max(...):提取分组内频次最高的行,若存在多个值频次相同,会保留所有对应行(示例数据无此情况)
  • 最后通过重命名和列顺序调整,得到目标输出格式

如果坚持用across思路,也可以先在分组内统计各列的频率,再合并后筛选最大值,但转长格式的方式更简洁直观,也更容易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 03:25:55