【发布时间】:2018-05-14 18:40:24
【问题描述】:
假设我有一个示例数据框:
frame <-
data.frame(group = c(rep(1, 3), rep(2, 3)),
idea = c(1, 2, 3, 1, 2, 4),
value = c(10000, 5000, 50, 5000, 7500, 100),
level = sample(c("rough", "detailed"), 6, TRUE))
我想要一个值的条形图,其中包含按其值排序的组中的每个想法。我可以这样靠近
library(dplyr)
library(ggplot2)
top_ideas <-
frame %>%
group_by(group) %>%
arrange(group, desc(value))
frame %>%
group_by(group) %>%
mutate(idea = idea %>% factor(levels = top_ideas$idea)) %>%
ggplot(aes_string(x = "idea", y = "value", fill = "level")) +
geom_bar(stat = "identity") +
theme(legend.position = "bottom",
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1)) +
facet_wrap(~group, scales = "free")
最后dplyr 行中的变异是根据它们在上面的top_ideas 数据框中的顺序设置因子水平。不幸的是,由于第 1 组和第 2 组共享想法 1 和 2,因此排序由第一组设置。
我想要的是独立于每个组的两个方面的想法排序。我怎样才能在 dplyr 字符串中做到这一点?我错过了一些简单的东西吗?
我应该注意,这是示例数据。实际数据要大得多,包含更多的群体和更多的共享想法。
【问题讨论】: