使用R按列值排序数据帧

时间:2016-05-13 17:47:37

标签: r dataframe

我有一个由

给出的数据框
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)

我想按照y列进行订购。

我做了类似

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

我上了y列

AAABBCCCCCC

但实际上我也想通过数量来订购它,所以在我的y栏目中我想获得

BBAAACCCCCC

我该怎么办?

此外,我还要计算得到多少(我对此没有任何线索):

B 2


A 3


C 6 

谢谢!

2 个答案:

答案 0 :(得分:3)

这应该可以解决问题:

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

获得计数的另一个好方法是使用table

table(df$y)    

答案 1 :(得分:0)

使用dplyr

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