我有两个数值向量,我想按其观测值的长度排序,即每个观测值出现的次数。
例如:
x <- c("a", "a", "a", "b", "b", "b", "b", "c", "e", "e")
这里,b
出现了四次,a
出现了三次,e
出现了两次,c
出现了一次。我想要我的结果按此顺序排列。
ans <- c("b", "b", "b", "b", "a", "a", "a", "e", "e", "c")
我试过这个:
x <- x[order(-length(x))] # and some similar lines.
谢谢
最佳答案
使用 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"
关于r - 在 R 中按长度排序数字向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23869726/