在R中按长度排序数字向量

npe*_*ira 2 r

我有两个数字向量,我想他们的观察长度排序,即每个观察出现的次数.

例如:

x <- c("a", "a", "a", "b", "b", "b", "b", "c", "e", "e")
Run Code Online (Sandbox Code Playgroud)

在这里,b发生四次,a三次,e两次和c一次.我希望我的结果符合这个顺序.

ans <- c("b", "b", "b", "b", "a", "a", "a", "e", "e", "c")
Run Code Online (Sandbox Code Playgroud)

我试过这个:

x <- x[order(-length(x))] # and some similar lines.
Run Code Online (Sandbox Code Playgroud)

谢谢

ags*_*udy 7

使用rle你可以获得价值长度.您可以订购长度,并使用值使用新订单重新创建向量:

xx <- c('a', 'a', 'a', 'b', 'b', 'b','b', 'c', 'e', 'e')
rr <- rle(xx)
ord <- order(rr$lengths,decreasing=TRUE)
rep(rr$values[ord],rr$length[ord])

## [1] "b" "b" "b" "b" "a" "a" "a" "e" "e" "c"
Run Code Online (Sandbox Code Playgroud)


Hen*_*rik 5

您也可以ave在计算lengths 时使用

x[order(ave(x, x, FUN = length), decreasing = TRUE)]
# [1] "b" "b" "b" "b" "a" "a" "a" "e" "e" "c"
Run Code Online (Sandbox Code Playgroud)