Reordenar eixo x do gráfico de barras ggplot por facet_wrap

Digamos que eu tenho um exemplo de quadro de dados:

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))

Eu gostaria de um gráfico de barras de valores com cada idéia em um grupo ordenado por seu valor. Posso me aproximar assim

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")

A mutação na finaldplyr A linha está definindo os níveis dos fatores de acordo com sua ordem notop_ideas dataframe acima disso. Infelizmente, como as idéias nos 1 e 2 são compartilhadas pelos grupos 1 e 2, a ordem é definida pelo primeiro grupo.

O que eu gostaria de ter é a ordenação de idéias nas duas facetas, independente de cada grupo. Como posso fazer isso em umdplyr corda? Estou perdendo algo simples?

Devo notar que este é um exemplo de dados. Os dados reais são muito maiores e englobam mais grupos e mais idéias que são compartilhadas.

questionAnswers(1)

yourAnswerToTheQuestion