基于频率调整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
相关产品推荐
相关产品推荐

