创建计数向量

时间:2016-08-02 09:06:34

标签: r

如果可能,我想创建一个计数向量。 例如:我有一个向量

x <- c(3, 0, 2, 0, 0)

如何为0到3之间的所有整数创建频率向量?理想情况下,我想得到一个这样的矢量:

> 3 0 1 1

分别给出0,1,2和3的计数。

非常感谢!

3 个答案:

答案 0 :(得分:2)

你可以做到

table(factor(x, levels=0:3))

仅使用table(x)是不够的。

tabulate更快

tabulate(factor(x, levels = min(x):max(x)))

答案 1 :(得分:1)

你可以使用table():

a <- table(x)
a
x
#0 2 3 
#3 1 1 

然后你可以对它进行子集化:

a[names(a)==0]
#0 
#3

如果您更乐于使用它,请将其转换为data.frame

u<-as.data.frame(table(x))
u
#  x Freq
#1 0 3
#2 2 1
#3 3 1

编辑1: 对于级别:

a<- as.data.frame(table(factor(x, levels=0:3)))

答案 2 :(得分:1)

您可以使用rle执行此操作(我在几分钟内就完成了这项工作,很抱歉,如果它不够优化的话)。

x = c(3, 0, 2, 0, 0)
r = rle(x)
f = function(x) sum(r$lengths[r$values == x])
s = sapply(FUN = f, X = as.list(0:3))
data.frame(x = 0:3, freq = s)
#> data.frame(x = 0:3, freq = s)
#  x freq
#1 0    3
#2 1    0
#3 2    1
#4 3    1