Мои данные выглядят так:
Col1 Col2 Col3
A Dog 3
A Cat 5
A Hat 6
B Dog 8
B Cat 3
B Hat 4
Col1 и Col2 - факторы, а A - первый уровень Col1.
Я хочу построить столбец Col2 как столбчатую диаграмму в порядке убывания по столбцу Col3, но где порядок столбца Col2 в пределах уровня фактора, определенного как A в столбце Col1, имеет приоритет. То есть я хочу, чтобы данные были отображены следующим образом (я перевернул оси так, чтобы значения в Col2 были на оси y, поэтому столбцы графика будут читаться сверху вниз):
Col1 Col2 Col3
A Hat 6
B Hat 4
A Cat 5
B Cat 3
A Dog 3
B Dog 8
Прямо сейчас я могу получить только ggplot для отображения столбцов, определяемых наибольшим общим значением (8), а не наибольшим значением только на уровне фактора A (6). Вот так это выглядит:
Col1 Col2 Col3
A Dog 3
B Dog 8
A Hat 6
B Hat 4
A Cat 5
B Cat 3
Я знаю, что могу сделать это вручную, повторно указав уровни фактора в Col2, но мои реальные данные имеют 40 значений для Col2, поэтому потребуется много печатать. Я заказал и сократил фрейм данных с помощью arrange(Col1, desc(Col3)) %>% select(Col2)
, чтобы получить вектор, содержащий правильный порядок столбцов Col2 (right_order = "Hat", "Hat", "Cat", "Cat", "Dog", "Dog"
), но я не могу понять, как использовать этот вектор, чтобы сообщить ggplot, как упорядочить данные. Я пробовал использовать его в reorder
, но получил ошибку arguments must have the same length
. Я прочитал бесчисленное количество вопросов и руководств по переупорядочиванию уровней факторов для построения графика в ggplot, но я не могу найти указаний о том, как просто использовать порядок в пределах одного уровня фактора (A в Col1) для построения графика.