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

基于频率调整Excel分类列排序(R语言实现)

基于频率排序分类变量的修正方案

原代码存在几处错误,导致无法正确实现按频率调整zanr(游戏类型)分类变量的排序,下面是修正后的完整代码及问题说明:

原代码的问题点

  • 错误引用了不存在的数据集dotaznik2,需统一使用读取的data_ex
  • 误用未定义的变量D,排序时直接使用逻辑值TRUE(降序)或FALSE(升序)即可
  • 重新指定因子水平时,多余的order = D参数无意义,直接设置levels参数即可

修正后的完整代码

library(ggmosaic)
library(readxl)
library(dplyr)  
library(ggplot2)
library(ggpubr)

# 设置工作路径(根据自身实际路径修改)
setwd("C:/ZS (projekt)")

# 读取Excel数据
data_ex = read_excel("C:/Users/zukov/OneDrive/Desktop/Pocitacove_hry.xlsx")

# 简化变量命名
colnames(data_ex) = c("ID","nazev","rok_vydaju","zanr","publisher","plat","pocitac_studium","soc_site",
                     "os","leg_software","ikb_znalost")

# 转换为因子并替换标签
data_ex$zanr = as.factor(data_ex$zanr)
data_ex$zanr = factor(data_ex$zanr,
                      levels = c("Sports/Racing","Simulation","Strategy","Role-Playing","Action","Shooter"),
                      labels = c("Sportovní/Závodní","Simulace","Strategie","RPG","Akční","Střílečka"))

# 计算初始频率
cetnosti_nom = table(data_ex$zanr)
cetnosti_nom # 输出原始绝对频率

# 按频率降序排序因子水平
data_ex$zanr = factor(data_ex$zanr,
                      levels = names(sort(table(data_ex$zanr), decreasing = TRUE)))

# 查看排序后的频率
cetnosti_nom = table(data_ex$zanr)
cetnosti_nom # 输出按频率降序排列的结果

效果验证

运行代码后,最后输出的cetnosti_nom会按照各游戏类型的出现频率从高到低排列,后续绘制图表时,zanr的分类顺序也会遵循该频率排序逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 18:05:29