我有一个由
给出的数据框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
谢谢!
答案 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)