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

如何在R语言中对DataFrame列的频率分布进行排序

嘿,我来帮你搞定这个R语言的小问题!你已经知道用table()函数把DataFrame的列转成频率分布了,接下来要给这个分布排序其实超简单,我用你给的示例数据一步步演示给你看:

先把示例数据搭好

首先先把你提到的测试DataFrame定义完整:

a <- c(13, 14, 15, 16, 15, 15, 22, 21, 44, 21)
b <- c(16, 17, 17, 18, 18, 22, 17, 16, 16, 17)
test <- data.frame(a, b)

生成目标列的频率分布

比如我们先处理列a,用table()函数生成频率分布:

# 生成列a的频率分布
freq_a <- table(test$a)
# 查看原始结果
freq_a

这时候输出的是默认按数值大小排序的结果,如果你想按出现频率排序,就看下面的操作。

对频率分布排序

R里的sort()函数可以直接对table生成的结果进行排序,分两种常用场景:

按频率从高到低排序(最常用)

想快速看到哪个值出现次数最多,就用decreasing = TRUE:

sorted_freq_a_desc <- sort(freq_a, decreasing = TRUE)
sorted_freq_a_desc

运行后你会看到15(出现3次)排在最前面,然后是21(2次),剩下的都是1次的。

按频率从低到高排序

如果想找出现次数最少的值,就把参数改成FALSE:

sorted_freq_a_asc <- sort(freq_a, decreasing = FALSE)
sorted_freq_a_asc

可选:转成DataFrame方便后续处理

如果后续要对排序后的结果做更多操作,比如绘图、统计,可以把它转成DataFrame格式:

# 转成DataFrame
sorted_df <- as.data.frame(sorted_freq_a_desc)
# 给列起个更直观的名字
colnames(sorted_df) <- c("Value", "Frequency")
sorted_df

当然,对列b的操作方法完全一样,把test$a换成test$b就行啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:44:29