R语言mode()返回"numeric"而非数值?新手求正确获取众数方法
问题解答
为什么mode(MoneyData)返回"numeric"?
R里的mode()函数不是用来计算统计众数的,它的作用是返回对象的存储模式(也就是数据类型)。你用c()创建的MoneyData是数值型向量,所以返回"numeric"是完全正确的结果——你误解了这个函数的用途,它本来就不会返回具体的数值。
如何获取你想要的统计众数?
如果你要的是向量中出现次数最多的数值(统计意义上的众数),R没有内置的众数函数,你可以自己写一个简单的函数实现:
# 定义众数计算函数 get_mode <- function(x) { # 生成频率统计表 freq_table <- table(x) # 找出最高出现次数 max_count <- max(freq_table) # 返回对应数值 as.numeric(names(freq_table[freq_table == max_count])) } # 调用函数获取结果 get_mode(MoneyData)
运行这段代码会返回22000,这就是你的MoneyData向量中出现次数最多的数值。
如果你习惯用tidyverse工具包,也可以用dplyr来计算:
library(dplyr) # 用dplyr管道计算众数 tibble(MoneyData) %>% count(MoneyData, sort = TRUE) %>% filter(n == max(n)) %>% pull(MoneyData)
内容的提问来源于stack exchange,提问作者Will Screwdriver
相关产品推荐
相关产品推荐

