2017-02-17 14 views
0

У меня есть dataframe структурирована следующим образом:Переупорядочение столбцов по y-значению в R?

> head(df) 
    Zip Crimes Population CPC 
1 78701 2103  6841 0.3074 
2 78719 186  1764 0.1054 
3 78702 1668  21334 0.0782 
4 78723 2124  28330 0.0750 
5 78753 3472  49301 0.0704 
6 78741 2973  44935 0.0662 

И я черчения его с помощью этой функции:

p = ggplot(df, aes(x=Zip, y=CPC)) + geom_col() + theme(axis.text.x = element_text(angle = 90)) 

И это граф я получаю:

p

Как я могу заказать участок по цене за клик, где самые высокие Zip-коды находятся слева?

+0

@SimonJackson Работал как шарм! Если вы опубликуете этот комментарий в качестве ответа, я его проверю :) –

+1

Альтернативный ответ Саймона заключается в сортировке вашего фрейма данных с помощью CPC, а затем использования функции fct_inorder из пакета forcats Хэдли. – thc

+0

Done, я опубликовал использование 'reorder()' в качестве ответа и удалил мой комментарий, чтобы не удвоить dip! Предложение @thc также хорошо. –

ответ

2

Конвертировать Zip в коэффициент, заданный отрицательной ценой за клик. Например, попробуйте df$Zip <- reorder(df$Zip, -df$CPC) перед нанесением графика. Вот небольшой пример:

d <- data.frame(
    x = c('a', 'b', 'c'), 
    y = c(5, 15, 10) 
) 

library(ggplot2) 

# Without reordering 
ggplot(d, aes(x, y)) + geom_col() 

enter image description here

# With reordering 
d$x <- reorder(d$x, -d$y) 
ggplot(d, aes(x, y)) + geom_col() 

enter image description here

0

Сортируйте кадр данных в порядке убывания, а затем построить его:

library(dplyr) 
df <- arrange(df,desc(CPC)) 
ggplot...