2016-05-13 6 views
2

と列の値により、データフレームは、私は尊敬列Yと、それを注文したいオーダーR

x <- c(1,3,4,5,6,9,7,8,9,2,1) 
y <- c("A", "A", "B", "C", "C", "C","A", "B", "C", "C", "C") 

df <- data.frame(x,y) 

によって与えられるデータフレームを有しています。

私は

orderdf <- df[order(df$y),] 

のような何かをしたと私はY列に

AAABBCCCCCC 

を得たが、実際に私は私が

を取得したい私のyの列になるようnumerosityでも、それを注文したいです
BBAAACCCCCC 

どうすればいいですか?

さらに私はまた、取得するためにどのように多くの(私はこれについて見当もつかない)カウントしたいと思います:

B 2 


A 3 


C 6 

ありがとうございました!カウントを得るための別の良い方法は、tableを使用している

# construct count variable 
df$count <- ave(df$x, df$y, FUN=length) 
# order it up 
df[order(df$count, df$y),] 

答えて

3

これはトリックを行う必要があります

table(df$y)  
+0

を使用して答え:D(あなたはdf $ count;の前にマイナスを削除してください)) – digEmAll

+1

@digEmAll 'ave'関数:これは古いものですが、良いことです。 – lmo

+1

'-df $ count'sで' CCCCCCAAABB'(つまり逆の順序)を生成するのでマイナスを削除しました;) – digEmAll

0

私はまったく同じに投稿するつもりだったdplyr

library(dplyr) 
df %>% 
    group_by(y) %>% 
    mutate(count = n()) %>% 
    arrange(count, y) %>% 
    select(-count)