如果可能,我想创建一个计数向量。 例如:我有一个向量
x <- c(3, 0, 2, 0, 0)
如何为0到3之间的所有整数创建频率向量?理想情况下,我想得到一个这样的矢量:
> 3 0 1 1
分别给出0,1,2和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