2017-06-24 10 views
2

データフレーム内に1つの要因があります。私は、その因子レベルに対する最短長さの最長の長さ(最もエントリ)(以上のエントリを有するものから、因子のレベルを注文したいファクタの長さで並べ替え

df<- data.frame(x= c("B","B","B","A","A","C","C","C","C"), y= c( 
"2", "2", "2","1","1","3","3","3","3")) 

そしてIが出力すべき:

df<- data.frame(x= c("C","C", "C","C","B","B","B","A","A",), y= c( 
"3","3","3","3", "2", "2","2","1","1",)) 

私が試してみました:ここ

A.data$loc<-sort(length(A.data$loc)) 

答えて

0

はdplyrを使用して別の方法である:

require(dplyr) 
require(magrittr) 

df %>% 
    group_by(x) %>% 
    mutate(count = n()) %>% 
    arrange(desc(count)) %>% 
    select(-count) 

出力は次のようになります。

 x  y 
    <fctr> <fctr> 
1  C  3 
2  C  3 
3  C  3 
4  C  3 
5  B  2 
6  B  2 
7  B  2 
8  A  1 
9  A  1 
0

我々はdata.table

library(data.table) 
setDT(df)[, n := .N, x][order(-n)][, n := NULL][] 
# x y 
#1: C 3 
#2: C 3 
#3: C 3 
#4: C 3 
#5: B 2 
#6: B 2 
#7: B 2 
#8: A 1 
#9: A 1 

それともbase R

df[with(df, order(factor(x, levels = names(sort(table(x), decreasing = TRUE))))),] 
から tableとでこれを行うことができます
関連する問題