Рассмотрим этот пример.Я хочу создать собственную метку для своих панелей, соединив два столбца в строку.
Панели, созданные с помощью огранки, упорядочены в алфавитном порядке, но на самом деле я хочу, чтобы они были упорядочены по src
, поэтому SRC01 долженсначала, затем SRC02 и т. д.
library(tidyverse)
tibble::tibble(
src = rep(c("SRC03", "SRC04", "SRC01", "SRC02"), 2),
data = runif(8)
) %>%
mutate(
foo = case_when(src %in% c("SRC01", "SRC02") ~ "foo", TRUE ~ "bar"),
label = paste(foo, src)
) %>%
ggplot(aes(x = data)) +
geom_density() +
facet_wrap(~label)
![](https://i.imgur.com/bmyA0YV.png)
Создано в 2019-05-22 пакетом представлением (v0.3.0)
Я знаю, что этот порядок зависит от порядка уровней базовых факторов, но этот вопрос показывает, как вручную указывать уровни, которые мне не нужны (их многобольше SRC
значений, и я не хочу вводить их все ...).
Я нашел решение, используя fct_reorder
, в котором я мог бы указать:
mutate(label = fct_reorder(label, src, .fun = identity))
Ноэто работает только при наличии одной строки на src/label
комбинацию.Если я добавлю данные (т. Е. Более одной точки данных на комбинацию), произойдет сбой с:
Error: `fun` must return a single value per group
Каким будет самый краткий способ добиться того, что мне нужно?