2017-02-17 9 views
0

私はこのような構造のデータフレームがあります。Rのy値で列を並べ替える?

> 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

CPCでプロットを注文するにはどうしたらいいですか?最高の郵便番号は左側にありますか?

+0

@SimonJacksonが魅力のように働きました!あなたがそのコメントを回答として投稿したら、私はそれをチェックします:) –

+1

Simonの答えとは別に、あなたのデータフレームをCPCでソートし、Hadleyのforcatsパッケージからfct_inorder関数を使用することです。 – thc

+0

いいえ、私は答えとして 'reorder()'の使用を掲示し、ダブルディップしないように私のコメントを削除しました! @thcによる提案も良いです。 –

答えて

2

マイナスCPCで注文されたファクターに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...