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

R语言:按分组独立获取各分类变量的最频繁因子水平

按分组独立获取每个分类变量的最频繁值(R语言)

你需要按population分组后,独立统计每个变量(var1/var2/var3)的最频繁取值,而非变量组合的频次。你之前的代码用count(population, var1, var2, var3)统计的是三个变量的组合出现次数,所以得到的是组合的最常见结果,不符合需求。

解决方案

首先定义一个获取向量最频繁值的函数:

get_mode <- function(x) {
  freq_table <- table(x)
  names(freq_table)[which.max(freq_table)]
}

然后结合dplyr的分组和批量汇总功能实现需求:

library(dplyr)

# 你的原始数据框
df <- data.frame(
  population = c(rep("A", 3), rep("B", 5), rep("C", 2)),
  var1 = c(rep("apple", 5), rep("banana", 5)),
  var2 = c(rep("blue", 2), rep("red", 4), rep("green", 4)),
  var3 = c(rep("pizza", 7), rep("soup", 3))
)

# 分组后独立计算每个变量的最频繁值
result <- df %>%
  group_by(population) %>%
  summarise(across(c(var1, var2, var3), get_mode))

print(result)

输出结果

# A tibble: 3 × 4
  population var1   var2  var3 
  <chr>      <chr>  <chr> <chr>
1 A          apple  blue  pizza
2 B          banana red   pizza
3 C          banana green soup 

代码说明

  1. get_mode函数:通过table()统计每个值的出现频次,再用which.max()找到频次最高的值对应的名称。
  2. across(c(var1, var2, var3), get_mode):批量对指定变量应用get_mode函数,每个变量在分组内独立计算,而非组合统计。
  3. 如果后续变量数量增加,只需修改across里的变量列表即可,无需逐个写变量名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 14:20:23