假设我使用以下语句生成了一个向量:
x1 <- rep(4:1, sample(1:100,4))
现在,当我尝试使用以下命令计算出现次数时
count(x1)
x freq
1 1 40
2 2 57
3 3 3
4 4 46
或
as.data.frame(table(x1))
x1 Freq
1 1 40
2 2 57
3 3 3
4 4 46
在这两种情况下,都不会保留发生的顺序。我想保留发生的顺序,即输出应该像这样
x1 Freq
1 4 46
2 3 3
3 2 57
4 1 40
最干净的方法是什么?另外,有没有办法强制执行特定的订单?
答案 0 :(得分:5)
您正在寻找rle
功能
rle(x1)
## Run Length Encoding
## lengths: int [1:4] 12 2 23 52
## values : int [1:4] 4 3 2 1
答案 1 :(得分:4)
您可以像这样订购表格:
set.seed(42)
x1 <- rep(4:1, sample(1:100,4))
table(x1)[order(unique(x1))]
# x1
# 4 3 2 1
# 92 93 29 81
答案 2 :(得分:2)
一种方法是将您的变量转换为factor
并使用levels
参数指定所需的顺序。从?table
:&#34;表使用交叉分类因子来构建每个因子水平组合的计数的列联表&#34 ;; &#34;最好是提供因素而不是依赖强制。&#34;。因此,通过转换为自己的因子,您负责levels
设定的强制和顺序。
x1 <- rep(factor(4:1, levels = 4:1), sample(1:100,4))
table(x1)
# x1
# 4 3 2 1
# 90 72 11 16