r - 如何按字符串值的频率对数据进行排序?
问题描述
我制作了一个堆积条形图,但想以我的第一个变量的频率上升的方式排列我的 x 轴。我的数据都是字符串,我有 4 个不同的字符串(字符串 A、字符串 B、字符串 C 和字符串 D)。我一直在尝试让我的堆积条形图按字符串 A 的频率排序,但不知道如何。
我一直在尝试使用 factor() 和 order() 和 name[order()] 但它们都导致了很多错误。
data$variable <- factor(data$variable, levels = data$variable[order(data$val)])
ggplot(data = data, aes(x = variable, y = countofdata, fill = factor(value)))
+ geom_bar(
stat = "identity")
解决方案
像这样的东西可以解决问题
# generate data
data <- data.frame(variable= factor(c("a", "a", "a", "c", "d", "d")))
# see the order of the levels
data$variable
# [1] a a a c d d
# Levels: a c d
# change factor levels ascending
data$variable <- factor(data$variable, levels = names(sort(table(data$variable))))
# output
data$variable
# [1] a a a c d d
# Levels: c d a
# -> correct order
我无法测试这是否会为您锻炼,因为您没有提供任何数据。下次请这样做(请参阅此处)。
编辑
根据评论编辑
categories <- c("category 3", "category 3", "category 3", "category 2", "category 2", "category 2", "category 1", "category 1", "category 1")
values <- c("A", "B", "C", "A", "A", "A", "A", "A", "C")
data <- cbind.data.frame(categories, values)
tabl <- aggregate(values ~ categories, data, table)
data$categories <- factor(data$categories, levels = as.character(tabl$categories[order(tabl[ , "values"][ , "A"], decreasing= FALSE)]))
data$categories
# Levels: category 3 category 1 category 2
推荐阅读
- google-app-engine - 谷歌应用引擎 (GAE) / Cloud SQL 上的 Flask-migrate 暂存
- java - java中的面向对象编程|| 不知道为什么我的列表客户不打印客户列表
- php - 从网站抓取的链接超链接获取 HTML
- django - 来自 django 中同一视图的问题女巫 pyplot 图形
- sql - 获取一组 sql impala 的平均计数
- php - 将表单 1.9.3 迁移到 2.3.4 后,Magento 2 基本图像和缩略图图像未显示在前端
- javascript - Javascript 自动完成下拉菜单作为用户类型
- angular - Angular rxjs 到 rxjs 6 和 rxrs-compat
- flutter - 如何在 Flutter 中创建自定义 InlineSpan?
- javascript - 制作一个 Class 或 ID 以停止监听全局滚动事件