我想通过以下方式创建计数向量:
说我的向量是
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
关于r - 创建表示计数的新向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57230520/