r - 创建表示计数的新向量

标签 r count

我想通过以下方式创建计数向量:

说我的向量是

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.tabledplyr :
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/

相关文章:

r - 模块 'rpy2.robjects.pandas2ri' 没有属性 'ri2py'

MySQL - 在一个查询中 INSERT 之前的 COUNT

Django注释(),计数()

ios - Swift iOS - 如何在水平 CollectionView 单元格即将超过屏幕边界时截断它们

numpy - 获取 numpy 数组中具有最大计数的每个值

R,dplyr - group_by() 和arrange() 的组合不会产生预期的结果?

r - ggplot2无法绘制曲线

r - 反转 col2rgb 和 rgb2hsv

R:写入文件时不带尾随换行符

python - Pandas 计算 2 列中的值对,并以第三列为条件