我想通过以下方式创建计数向量:
说我的载体是
x <- c(1,1,1,1,2)
代表分类变量。
我想要形式的第二个向量
x1 <- c(4,4,4,4,1)
代表每个级别的计数。例如1次出现4次,级别2次出现1次。
我试过了
r <- range(x) ; table(factor(x, levels = r[1]:r[2]))
tabulate(factor(x, levels = min(x):max(x)))
table(x)
最佳答案
这使用ave
对每个值进行分组。如果您的向量绝对是integer
类型,则可能会更好。
x <- c(1,1,1,1,2)
ave(x, x, FUN = length)
[1] 4 4 4 4 1
data.table
和dplyr
中的等效项:library(data.table)
data.table(x)[, n:= .N, by = 'x'][]
x n
1: 1 4
2: 1 4
3: 1 4
4: 1 4
5: 2 1
library(dplyr)
library(tibble)
tibble::enframe(x, name = NULL)%>%
add_count(value)
##or
x%>%
tibble::enframe(name = NULL)%>%
group_by(value)%>%
mutate(n = n())%>%
ungroup()
# A tibble: 5 x 2
value n
<dbl> <int>
1 1 4
2 1 4
3 1 4
4 1 4
5 2 1