查找R中数组中数字的频率

Finding the frequency of numbers in an array in R

我需要找到数字出现的频率 0:8。在 mxn 阶矩阵 A 的每一列中。

我该怎么做?

提前致谢

您可以使用 applyMARGIN=2 来遍历列,对 0:8 (x %in% 0:8) 的元素进行子集化,转换为 factor levels 指定为 0:8 并使用 table 获取元素的频率。

apply(A, 2, function(x) table(factor(x[x %in% 0:8], levels=0:8)))

或者另一种选择是 melt 矩阵并使用 setDT 转换为 data.table,子集 0:8 (J(0:8)) 来自 "value" column 在设置 "value" column as key (setkey) 之后,group by "Var2",将 "value" column 更改为 "factor" class 并使用 table

获取频率
library(data.table)
setkey(setDT(melt(A)), value)[J(0:8), 
      as.list(table(factor(value, levels=0:8))), by= Var2]

数据

set.seed(24)
A <- matrix(sample(0:15, 10*20, replace=TRUE), ncol=10)