R 如何按字符串值的频率对数据进行排序?

R 如何按字符串值的频率对数据进行排序?,r,ggplot2,R,Ggplot2,我已经做了一个堆叠条形图,但我想把我的x轴安排在一个上升的方式,在我的第一个变量的频率。我的数据都是字符串,我有4个不同的字符串(字符串A、字符串B、字符串C和字符串D)。我一直试图得到它,以便我的堆叠条形图是按字符串A的频率排序的,但不知道如何排序 我一直在尝试使用factor()和order()以及name[order()],但它们都会导致很多错误 data$variable <- factor(data$variable, levels = data$variable[order(d

我已经做了一个堆叠条形图,但我想把我的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")

data$variable像这样的东西就可以做到这一点

# 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
#生成数据

这是非常有用的数据!非常感谢。不过我有一个问题。我目前有两个类别,其中一个包含我所有的类别名称(类别1、类别2等),另一个是每个类别名称的字符串赋值。i、 e.我可能有(1类,A)、(1类,A)、(1类,B)、(3类,B)等数据。每个类别都有相同数量的输入。我正试图让它,所以我排序类别1,类别2,和类别3的次数,他们有字符串A。抱歉,在措辞的错误question@bensir如果你提供数据,你会更容易理解。我不能这样理解。不管怎样,这对我来说似乎是一个新问题,还是仍然是关于因子顺序的问题?如果这是一个新问题,你可以问它,如果它不起作用。我将在一秒钟内整理一个快速数据集。下面是它的一个快速子集:categories@bensir您可以这样做,但请记住,在StackOverflow上,您应该一次问一个问题。新问题也是关于要素顺序的吗?是的,这仍然是关于要素顺序的。这些数据有1类1个赋值,2类有3个A,3类有2个A,所以我希望按2类,3类,然后1类的顺序排列(根据A的频率递减)
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