R语言如何获取table频数统计最大值及对应分类名称
R语言获取table频数最大值对应分类名的实现方法
核心方案
直接用which.max()定位最大值在table结果中的索引,再从table的名称属性中提取对应的分类值即可,不需要额外加载第三方包。
针对你的示例代码,完整可运行写法:
# 生成频数表 x <- table(Car_DataSet_no_na$Dealer) # 定位最大值位置 max_pos <- which.max(x) # 提取对应经销商名称 top_dealer <- names(x)[max_pos] # 提取对应频数值 top_freq <- unname(x[max_pos]) # 拼接为字符串结果 output_str <- paste0("最高频数经销商:", top_dealer, ",频数:", top_freq)
运行后output_str的结果为字符串格式:
[1] "最高频数经销商:Anny,频数:870"
并列最大值处理
如果存在多个经销商频数相同且都是最大值的场景,which.max()只会返回排序在最前的第一个最大值条目。如果需要输出所有并列最高的条目,用逻辑筛选即可:
# 筛选所有频数等于最大值的条目 max_subset <- x[x == max(x)] # 拼接所有结果 output_all <- paste(names(max_subset), unname(max_subset), sep = ":", collapse = "、")
比如当Anny和David的频数都是870时,输出结果为:
[1] "Anny:870、David:870"
注意点
- table对象本质是带名称属性的数值向量,直接用
max(x)只能拿到数值本身,无法关联对应的分类名,必须结合名称索引取值 - 不建议用反复匹配最大值的写法替代
which.max()做单最大值提取,前者在数据量较大时运算效率更低
内容的提问来源于stack exchange,提问作者HaMo
相关产品推荐
相关产品推荐

