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

标签 r

我有两个数值向量,我想按其观测值的长度排序,即每个观测值出现的次数。

例如:

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/

相关文章:

R函数不循环遍历列但重复第一行结果

删除组中的值与 R 不匹配的数据框行

r - 解决 a[b] 可能返回不同长度向量的问题的有效方法是什么?

R 通过读取当前行和上一行创建一个新列

r - 更新到 2.15 后在服务器上安装软件包时出现问题

R:在组上应用函数

r - 具有离散值的热图/图像

用 R 中的子集均值替换 NA 值?

R:将其编写为函数的变量排名模型自动化代码

r - 在这种情况下如何使用 str_c 处理 NA